内容加载器反向游标顺序

时间:2015-03-11 22:35:31

标签: android android-contentprovider

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

2 个答案:

答案 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等。