Android中ListView的A-Z字母排序和过滤搜索功能并且实现汉字转成拼音的功能,一般对联系人,城市列表等实现A-Z的排序,因为联系人和城市列表可以直接从数据库中获取它的汉字拼音,而对于一般的数据,实现A-Z的排序,基实只需要将汉字转换成拼音就行了。
以下为步骤:
SortModel 一个实体类,里面一个是ListView的name,另一个就是显示的name拼音的首字母。
2.SideBar类就是ListView右侧的字母索引View,需要使用setTextView(TextView mTextDialog)来设置用来显示当前按下的字母的TextView,以及使用setOnTouchingLetterChangedListener方法来设置回调接口,在回调方法onTouchingLetterChanged(String s)中来处理不同的 *** 作。
3.CharacterParser 这个类是将汉字转换成拼音的类,该拼音没有声调的,该类是单例类,其中定义了三个方法,在这个demo中用到的是getSelling(String chs)方法,将词组转换成拼音。
4.ClearEditText类是自定义的一个在右侧有删除图片的EditText,当然也可以用Android原生的EditText,这里就不贴上代码了Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框。
5.SortAdapter 数据的适配器类,该类需要实现SectionIndexer接口,该接口是用来控制ListView分组的。
6.最后运行效果
数据库采用SQLite这个是查询方法,至于数据的链接什么的 请百度。
调用方法:
String sql = "SELECT * FROM info ORDER BY id"
ArrayList<HashMap<String, String>>list = baseUtil.queryBySqlMap(sql,
null)
查询方法:
/******************************************
* 用sql语句查询
*
* @param sql
*sql查询语句
* @param selectionArgs
*参数值
* @return ArrayList<HashMap<String, String>>
*******************************************/
public ArrayList<HashMap<String, String>>queryBySqlMap(String sql,
String[] selectionArgs) {
SQLiteDatabase dbs = DatabaseServer.getDatabase()
Cursor cursor = dbs.rawQuery(sql, selectionArgs)
ArrayList<HashMap<String, String>>list = new ArrayList<HashMap<String, String>>()
while (cursor.moveToNext()) {
HashMap<String, String>map = new HashMap<String, String>()
for (int i = 0i <cursor.getColumnCount()i++) {
map.put(cursor.getColumnName(i),
nullToString(cursor.getString(i)))
}
list.add(map)
}
cursor.close()
return list
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)