gpt4 book ai didi

android:stackFromBottom ="true"似乎不能完美工作(带适配器的反向 ListView)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:06 26 4
gpt4 key购买 nike

好吧,让我解释一下“不能完美运行”是什么意思。

我有一个没有 android:stackFromBottom="true" 参数的 ListView 。我还有一个带有常规 getItem(position) 的 ArrayAdapter。我调用我的网络服务器,以 asc 日期顺序获取数据。

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

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

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

我猜结构是 ListView -> Adapter -> Row Views 所以无论 stackFromBottom 值如何,都只有一个 child ,适配器。对吧?

无论如何,ListView 和 Adapter 的逆序怎么办?

最佳答案

实现此目的的一种优雅方式是重写您的 Adapter.getItem() 方法,以相反的顺序返回项目本身。

这对于 Adapter 来说是一个很好的模式,因为它不需要仅仅为了显示目的而对数据进行不同的排序(排序列表可能会产生开销,或者其他一些原因导致原始顺序在应用程序的另一部分很重要)。

相反,是适配器在不影响基础数据集的情况下显示更改。

这是我使用的:

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

这是基于@mes's answer对于这个相关问题:

查看该线程以讨论其他可能的解决方案。

关于android:stackFromBottom ="true"似乎不能完美工作(带适配器的反向 ListView),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22718261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com