android:stackFromBottom ="true"似乎不能正常工作(反向ListView与适配器)

Dio*_*lor 5 android android-listview android-adapter android-adapterview

好吧,让我解释一下"不能完美运作"的含义.

我有一个没有android:stackFromBottom="true"参数的listview .我也有一个常规的ArrayAdapter getItem(position).我打电话给我的网络服务器,获取asc日期订单的数据.

这样,列表中位置0(顶部)的项目具有最小的日期.我可以滚动顶部 - >底部.好.

我添加了android:stackFromBottom,现在我看到现在你可以从bottom-> top开始scolling但是位置0的项目仍然是顶级项目并且具有最小的日期.所以适配器没有改变它的顺序.

解决此问题的唯一方法是更改getItem(getCount()-1-position)适配器内部.但是我添加并通知适配器,适配器仍然会将项目添加到底部.

我猜结构是ListView -> Adapter -> Row Views如此无论stackFromBottom价值,只有一个孩子,适配器.对?

无论如何,如何使用适配器的ListView以相反的顺序?

Ric*_*ier 5

一个很好的方法是覆盖你的Adapter.getItem()方法,以相反的顺序返回项目本身.

这是一个很好的模式,Adapter因为它不需要为了显示目的而对数据进行不同的排序(排序列表可能存在开销,或者原始顺序在应用程序的另一部分中很重要的其他原因).

而是适配器显示更改而不影响基础数据集.

这是我用过的:

@Override
public MyListItemClass getItem(int position)
{
    return super.getItem(getCount() - 1 - position);
}
Run Code Online (Sandbox Code Playgroud)

这是基于@ mes对这个相关问题的回答:

看看那个线程,讨论其他可能的解决方案.


Dio*_*lor 3

我高估了android:stackFromBottom力量。它的基本作用类似于“重力:底部”。它不会以相反的顺序添加项目,但它只是使内容与列表视图的底部对齐。

我仍在寻找反向适配器解决方案。