android – 如何按搜索栏中的名字和姓氏排序 – Sqlite

我有一个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的答案,这给了我错误的结果.

我尝试了以下方法:

>字符串选择= Pe​​opleDataBase.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) {}
}
}

也许是最简单但不是最好的方式..希望我没有误解这个问题.

//编辑:

试试cursorAdapter而不是BaseAdapter这里是一个例子…… http://tausiq.wordpress.com/2012/08/22/android-list-view-from-database-with-cursor-adapter/

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能