内容加载器反转光标顺序

Content loader reverse cursor order

我有一个简单的聊天应用程序。我正在使用内容加载器在频道内显示消息。因为我想要 100 条最近的消息,所以我根据时间戳 desc 对消息进行排序并将其限制为 100。但我想在屏幕底部显示最近的消息。现在光标适配器首先显示最近的消息。如何反转光标的顺序? 根据我的说法,我将不得不在内容提供者中编写一些智能查询,或者必须以某种方式在游标适配器的 bindView 中操作游标。

尝试根据时间戳 ASC 而不是 DESC.

对邮件进行排序

编辑:抱歉,没领会这里的微妙之处。
您可以尝试这样以相反的顺序获取数据:

for (cursor.moveToLast(); !cursor.isBeforeFirst(); cursor.moveToPrevious()) 
{
    // do your magic 
}

我可能会使用子查询

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 是你的 class 定义表及其字段、UriS 等