如何在ListView中按Id升序显示CursorAdapter的数据?
解决方法:给SQL查询添加排序子句
很简单,你只需要在SQL查询语句末尾加上ORDER BY子句,指定按Id列升序排列,就能让ListView按Id从小到大展示数据了。另外先提个小细节:你原来的SQL语句里有个语法错误(where whereArgs),这会导致查询失败,得先修正条件部分的写法。
具体步骤:
修正SQL条件语法:
你的原SQL里where whereArgs是错误的,应该写成带占位符的条件(比如where 某字段 = ?),然后通过参数数组传入实际值。比如如果你的条件是匹配某个关键字,应该是where TextColumn like ?,参数用new String[]{"%" + whereArgs + "%"}这样的形式,具体根据你的业务需求调整。添加升序排序:
在SQL语句的最后加上ORDER BY IdColumn ASC,其中ASC表示升序(其实默认排序就是升序,写上它会让代码更清晰易懂)。
修改后的完整代码示例:
// 修正条件并添加排序的SQL语句,这里以"某个字段匹配占位符"为例,你可以替换成自己的实际条件 String sqlQuery = "select IdColumn, TextColumn from Comments where your_condition_field = ? ORDER BY IdColumn ASC"; Cursor cursor = rawQuery(sqlQuery, new String[]{whereArgs}); // Adapter和ListView绑定的代码保持不变,因为排序已经在Cursor中完成了 adapter = new android.support.v4.widget.SimpleCursorAdapter( context, android.R.layout.two_line_list_item, cursor, new String[]{"IdColumn", "TextColumn"}, new int[]{android.R.id.text1, android.R.id.text2}, 0); listView.setAdapter(adapter);
原理说明:
SimpleCursorAdapter是直接按照Cursor返回的数据顺序来渲染ListView的,所以只要你的SQL查询返回的Cursor已经是按Id升序排列的,ListView就会自动按这个顺序展示内容,不需要额外修改Adapter的配置。
如果之后数据库里的数据有更新,记得重新执行查询获取新的Cursor,并调用adapter.changeCursor(newCursor)来更新ListView的展示哦。
内容的提问来源于stack exchange,提问作者Sandeep Yohans
相关产品推荐
相关产品推荐

