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