Android 按字母顺序排序从游标填充的listview

Android 按字母顺序排序从游标填充的listview,android,arrays,sorting,colors,Android,Arrays,Sorting,Colors,我有一个列表视图,它是从一个sqlite数据中填充的,该数据是用一个适配器显示的光标获取的,我想在操作栏菜单单击上对列表视图进行排序,但光标似乎不像数组列表那样直接 代码段接收游标对象并传递给onCreate()中的适配器 在选项ItemSelected()中,将调用菜单栏以触发刷新和排序 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {

我有一个列表视图,它是从一个sqlite数据中填充的,该数据是用一个适配器显示的光标获取的,我想在操作栏菜单单击上对列表视图进行排序,但光标似乎不像数组列表那样直接

代码段接收游标对象并传递给onCreate()中的适配器

在选项ItemSelected()中,将调用菜单栏以触发刷新和排序

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        case R.id.menu_sort_by_name:
           // WHERE SORTING WOULD BE TRIGGERED tried querying the database again an passing sort order to a cursor seems not working
            Cursor cursor2 = databaseManager.queryAllInsects(BugsContract.BugsEntry.COLUMN_FRIENDLYNAME);
            swapCursor(cursor2);
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

如何按字母顺序对游标填充的listview进行排序?

一个用户列表示例

创建一个比较器:

public class NameComparator implements Comparator<User> {

    @Override
    public int compare(User x, User y) {
        if (x == null) {
            if (y != null) return -1;
        }
        if (y == null) return 1;

        int startComparison = x.getFirstName().compareTo(y.getFirstName());
        if (startComparison == 0)
            startComparison = x.getLastName().compareTo(y.getLastName());
        return startComparison;
    }
}

尝试对适配器内的ArrayList进行排序,然后调用
notifyDataSetChanged()
。如果数据没有更改,则在将数据分配给适配器之前,始终可以对提供给适配器的数据进行排序

cursor.sort();
mAdapter = new InsectRecyclerAdapter(this, cursor);

为什么不编写返回排序结果的查询?好的,我如何使查询刷新当前将数据填充到列表视图中的光标,例如,此方法fethSortedData()返回排序结果光标,我如何使用菜单上的当前光标更改光标单击此排序()来自何处请参阅Sigma的响应。如果您创建自定义对象,您必须决定如何使用游标而不是Arraylist对其进行排序,它可以直接使用Arraylist。您不是在RecyclerView中使用List或Arraylist吗?否,我将游标传递给适配器并获取cursor.getString(cursor.getColumnIndex(BugsContract.BugsEntry.COLUMN_SCIENTIFICNAME));像这样的价值观
    Collections.sort(userList, new NameComparator() {});
cursor.sort();
mAdapter = new InsectRecyclerAdapter(this, cursor);