android:stackFromBottom=";“真的”;似乎无法正常工作(使用适配器反转ListView)
好的,让我解释一下“不能完美工作”是什么意思 我有一个没有android:stackFromBottom=";“真的”;似乎无法正常工作(使用适配器反转ListView),android,android-listview,android-adapter,android-adapterview,Android,Android Listview,Android Adapter,Android Adapterview,好的,让我解释一下“不能完美工作”是什么意思 我有一个没有android:stackFromBottom=“true”参数的列表视图。我还有一个带有常规getItem(position)的阵列适配器。我调用我的Web服务器,获取asc日期顺序上的数据 这样,列表中位置0(顶部)的项目具有最小的日期。我可以滚动顶部->底部。好 我添加了android:stackFromBottom,现在我看到现在可以从底部->顶部开始搜索,但是位置0的项目仍然是顶部项目,并且日期最小。因此,适配器没有更改其顺序
android:stackFromBottom=“true”
参数的列表视图。我还有一个带有常规getItem(position)
的阵列适配器。我调用我的Web服务器,获取asc日期顺序上的数据
这样,列表中位置0(顶部)的项目具有最小的日期。我可以滚动顶部->底部。好
我添加了android:stackFromBottom
,现在我看到现在可以从底部->顶部开始搜索,但是位置0的项目仍然是顶部项目,并且日期最小。因此,适配器没有更改其顺序
解决此问题的唯一方法是在适配器内部更改getItem(getCount()-1-position)
。但是,我添加并通知适配器,适配器仍然会将项目添加到底部
我猜结构是ListView->Adapter->Row Views
,因此无论stackFromBottom
值如何,只有一个子项,即适配器。对吧?
无论如何,怎么能让一个带有适配器的列表视图按相反的顺序运行呢?我高估了android:stackFromBottompower。它的基本功能类似于“重力:底部”。它不会按相反的顺序添加项目,但只会使内容与listview的底部对齐
我仍在寻找反向适配器解决方案。一个很好的方法是重写
适配器.getItem()
方法,以反向顺序返回项目本身
对于适配器来说,这是一种很好的模式,因为它不需要仅为了显示目的而对数据进行不同的排序(排序列表时可能会有开销,或者其他一些原因说明原始顺序在应用程序的另一部分中很重要)
相反,适配器显示更改而不影响基础数据集
以下是我使用的:
@Override
public MyListItemClass getItem(int position)
{
return super.getItem(getCount() - 1 - position);
}
这是基于对这一相关问题的回答:
查看该线程以讨论其他可能的解决方案。也许您应该将其与AblistView一起使用。setTranscriptMode(int)
我有一个聊天应用程序,我提供了两种显示对话的模式-使用AblistView从下或从上。setStackFromBottom(布尔)
试试这个,希望能对你有所帮助。我建议使用comparator根据你想要的日期顺序返回对象。这样做将确保数据始终按照您想要的顺序发送,而不是服务器发送的数据。您可以检查如何使用sort它可以通过重写getItem
方法轻松实现。
LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(Application.get());
mLinearLayoutManager.setStackFromEnd(true);
mLinearLayoutManager.setReverseLayout(true);
list.setLayoutManager(mLinearLayoutManager);