我有一个Android应用程序,应该取代Android原生联系人.
我想为用户添加基于字符约束搜索用户的可能性.
例如:
这是我的联系人表:
id firstName lastName
1. Smith Jean
2. allen carr
3. zetter
4. john Stewart
5. Smith Allen
6. Smith Davey
7. Smitten
8. barney saltzberg
如果用户输入角色’s’,我想给他所有的联系人
‘s’用他们的名字或姓氏,首先按名字排序,然后按姓氏排序.从我想得到的结果之前的表是:
id firstName lastName
1. Smith Allen
2. Smith Davey
3. Smith Jean
4. barney saltzberg
4. Smitten
5. john Stewart
更新:
问题是当First名称等于NULL时,排序不起作用并且行显示在它应该之前.
我试过marcin的答案,这给了我错误的结果.
我尝试了以下方法:
>字符串选择= PeopleDataBase.COLUMN_FIRST_NAME“LIKE”约束“%’或”PeopleDataBase.COLUMN_LAST_NAME“LIKE’”约束“%’”;
Cursor cur = db.query(PeopleDataBase.TABLE_PEOPLE,null,selection,null,null,null,null);
>
我想通过两个不同的查询实现这一点,一个用于名字,一个用于姓氏,然后将它们连接到一个光标,但我确信有更好的解决方案.
更新:我也尝试按以下方式排序,但没有成功.
Cursor cur = db.query(PeopleDataBase.TABLE_PEOPLE, null, selection, null, null, null, PeopleDataBase.COLUMN_FIRST_NAME + "," + PeopleDataBase.COLUMN_LAST_NAME);
你有更好的解决方案吗?
解决方法:
你如何显示联系人?在列表视图中?
另一个想法是在列表视图中加载所有条目,然后您可以过滤列表
您可以创建自定义Listview并实现Filterable
public class YourContactsListAdapter extends BaseAdapter implements Filterable {
//some methodes to override
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence c) {}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {}
}
}
也许是最简单但不是最好的方式..希望我没有误解这个问题.
//编辑:
标签:android,sqlite,android-contacts
来源: https://codeday.me/bug/20190517/1122305.html