我有一个简单的聊天应用程序。我正在使用内容加载器在频道内显示消息。由于我想要100个最近的消息,我根据时间戳desc对消息进行排序,并将其限制为100.但我想在屏幕底部显示最近的消息。现在,光标适配器首先显示最近的消息。如何反转光标的顺序? 根据我的说法,我将不得不在内容提供者内部编写一些智能查询,或者以某种方式操纵光标适配器的bindView中的游标。
答案 0 :(得分:1)
尝试根据时间戳ASC
而不是DESC
对邮件进行排序。
编辑:对不起,这里没有把握这种弱点 你可以尝试这样的方法来获得相反的数据:
for (cursor.moveToLast(); !cursor.isBeforeFirst(); cursor.moveToPrevious())
{
// do your magic
}
答案 1 :(得分:0)
我可能会使用子查询
SELECT * FROM table ORDER BY timestamp WHERE _id
IN (SELECT _id FROM table ORDER BY timestamp DESC LIMIT 100)
与内容提供商一起使用:
String sel = BaseColumns._ID + " IN (SELECT " + BaseColumns._ID +
" FROM " + MyDb.TableName._TABLE_NAME + " ORDER BY " +
MyDb.TableName.TIMESTAMP + " DESC LIMIT 100)";
Cursor q = getContentResolver().query(MyDb.TableName.CONTENT_URI,
null, sel, null, MyDb.TableName.TIMESTAMP);
MyDb 是您定义表及其字段的类,UriS等。