Android中的反向列表视图?

Android中的反向列表视图?,android,android-widget,android-listview,android-cursor,Android,Android Widget,Android Listview,Android Cursor,有没有一种简单的方法可以按相反的顺序显示ListView?我正在尝试创建一个基于对话的应用程序,希望最新的条目位于ListView的底部。我知道transcriptMode和stackFromBottom,但我的问题是数据的顺序 假设我有100个对话项目,并希望显示项目80-100,其中100是最近的对话项目。我想显示80-100,这意味着在我的查询中ORDER BY id desc LIMIT 20,它强制将项目排序为100到80,这与我需要的相反。我目前有一些令人讨厌的内部查询代码,但我觉得

有没有一种简单的方法可以按相反的顺序显示ListView?我正在尝试创建一个基于对话的应用程序,希望最新的条目位于ListView的底部。我知道transcriptMode和stackFromBottom,但我的问题是数据的顺序


假设我有100个对话项目,并希望显示项目80-100,其中100是最近的对话项目。我想显示80-100,这意味着在我的查询中ORDER BY id desc LIMIT 20,它强制将项目排序为100到80,这与我需要的相反。我目前有一些令人讨厌的内部查询代码,但我觉得应该有一个更简单的解决方案,它基于反转光标或简单地反转ListView。

中,对于
getView()
方法,而不是在索引“position”中获取数据项,使用相反的词,意思是:numberOfItems减去位置

至于显示项目数,这也在baseAdapter内部:将
getCount()
返回的值设置为您希望的值(在您的示例中为20,但80-100表示它应该为21)

顺便说一句,您似乎是listView的初学者。我建议你看这段视频:


还要检查sdk管理器提供的api演示。他们有很多例子。

对我来说,使用BETWEEN关键字查询记录似乎是最简单的解决方案。

在适配器中使用此getItem方法进行反向排序:

@Override
public Object getItem(int position) {
   return super.getItem(super.getCount() - position - 1);
}

当从数据库中提取数据时,这段代码对我有用

cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor

不确定它是否可以工作,但您可以简单地查询所有项目,在返回的
光标中创建一个包含最后20个项目的数组,然后从该数组中创建一个
矩阵EXCURSOR
,并将其用于
列表视图。谢谢,我想这是最好的方式。我曾考虑将游标子类化以创建反向器,并考虑修改ListView,但两者之间的部分是明确的选择。我刚刚看了Romain关于Android性能的2009年I/O演讲,它暗示了这一方向,感谢指向ListView演讲的指针。谢谢,BETWEEN很有用,但对我来说不太管用,因为我不想添加查询来查找最后一段数据的位置。你能告诉我如何覆盖getItem()方法,但它显示一条消息,说明此处不允许@Override。我正在尝试重写onCreate方法内部