8

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

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

4

4 回答 4

10

在里面baseAdapter,对于getView()方法,不是获取数据中索引“位置”中的项目,而是使用相反的含义:numberOfItems 减去位置。

至于显示项目的数量,这也在 baseAdapter 内部:将返回的值设置为getCount()您希望的值(在您的示例中为 20,尽管 80-100 意味着它应该是 21)。

顺便说一句,在 listView 的情况下,您似乎是首发。我可以建议观看此视频: http ://www.youtube.com/watch?v=wDBM6wVEO70

还要检查 sdk manager 提供的 api-demos。他们有很多例子。

于 2012-06-07T23:44:08.507 回答
10

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

@Override
public Object getItem(int position) {
   return super.getItem(super.getCount() - position - 1);
}
于 2013-11-21T14:45:12.127 回答
1

从数据库中提取数据时,此代码对我有用。

cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor
于 2014-01-23T06:23:14.427 回答
0

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

于 2012-06-08T00:40:08.197 回答