我知道以某种方式可以使ListView在用户到达列表底部时加载更多数据。但是,我正在使用ScrollView,我有一个LinearLayout,这两个组件适用于滚动等等。但是我不知道我该怎么做才能获得无限卷轴。
我想我需要添加一些东西来读取屏幕上显示的LinearLayout的内容,并且当它计算出它是正在显示的LinearLayout的底部时(通过使用当前位置和View的高度) ),它会触发一个事件 但正如我所说,我不知道如何做到这一点。所以,如果有人能给我一些帮助,我将非常感激。
编辑:我在StackOverflow How to trigger an event when scrollView reach the bottom with Android?上发现了这篇文章,但我不知道如何处理答案:
根据要求,您可能会扩展BaseAdapter(而不是使用不同机制的CursorAdapter)。
以下是一段摘录:
public View getView(int position, View convertView, ViewGroup parent) { if (position == backingLinkedList.size()) { //get more items and add them to the backingLinkedList in a background thread notifyDataSetChanged(); } }
答案 0 :(得分:0)
如果您在到达滚动视图底部时可以触发事件,则可以尝试创建自己的视图类型来保存数据。到达视图底部时,将下一个数据加载到视图类中,并将其添加到滚动视图的布局中。
所以基本上创建一个类,它包含你所展示的部分。将第一个添加到scrollview中。当您点击底部时,请创建另一个包含下一个数据的视图并使用scrollviews_layout.addview(view_holding_the_new_data)
答案 1 :(得分:0)
我知道很久以前就解决了这个问题,但是我想分享我未来无限卷轴的解决方案。
我在onScroll
中使用OnScrollListener
方法触发后台线程以获取更多数据,并adapter.notifyDataSetChanged
通知ListView
要加载的更多数据并创建无限滚动。出于某种原因,onScrollStateChanged
没有触发,但onScroll
做了我需要的,所以我不需要打扰。
最长的时间我不明白如何让ListView
重新加载并让我回到列表的顶部,但后来我意识到我只需要初始化一个新的适配器并调用{{ 1}}一次,之后每次只调用setListAdapter
。在此之前,我还打电话给notifyDataSetChanged
,从而让我回到顶端。