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以相反的顺序?
一个很好的方法是覆盖你的Adapter.getItem()方法,以相反的顺序返回项目本身.
这是一个很好的模式,Adapter因为它不需要为了显示目的而对数据进行不同的排序(排序列表可能存在开销,或者原始顺序在应用程序的另一部分中很重要的其他原因).
而是适配器显示更改而不影响基础数据集.
这是我用过的:
@Override
public MyListItemClass getItem(int position)
{
return super.getItem(getCount() - 1 - position);
}
Run Code Online (Sandbox Code Playgroud)
看看那个线程,讨论其他可能的解决方案.
我高估了android:stackFromBottom力量。它的基本作用类似于“重力:底部”。它不会以相反的顺序添加项目,但它只是使内容与列表视图的底部对齐。
我仍在寻找反向适配器解决方案。
| 归档时间: |
|
| 查看次数: |
6129 次 |
| 最近记录: |