1

我知道当用户到达列表底部时,有可能制作一个加载更多数据的 ListView。但是,我正在使用一个 ScrollView,其中有一个 LinearLayout,这两个组件在滚动等方面效果很好。但我不知道我应该怎么做,所以它会得到一个无限的滚动。

我想我需要添加一些内容来读取屏幕上显示的 LinearLayout 的内容,并且当它计算出它是正在显示的 LinearLayout 的底部时(通过使用当前位置和视图的高度),它触发事件。
但正如我所说,我不知道如何做到这一点。所以,如果有人能给我一些帮助,我将不胜感激。

编辑:我在 StackOverflow 上找到了这篇文章How to trigger an event when scrollView 达到 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();
    }
}
4

2 回答 2

0

如果您可以在到达滚动视图底部时触发事件,您可以尝试创建自己的视图类型来保存数据。当您到达视图的底部时,将下一个数据加载到您的视图类中并将其添加到滚动视图的布局中。

所以基本上创建一个类来保存你展示的部分。将第一个添加到滚动视图中。当您到达底部时,创建另一个视图来保存您的下一个数据并使用scrollviews_layout.addview(view_holding_the_new_data)

于 2011-03-27T06:57:43.467 回答
0

我知道这个问题很久以前就解决了,但我想分享我的解决方案以供未来无限滚动。

我使用其中的onScroll方法OnScrollListener来触发后台线程以获取更多数据并adapter.notifyDataSetChanged通知ListView要加载的更多数据并创建无限滚动。出于某种原因,onScrollStateChanged没有触发,但onScroll做了我需要的,所以我不需要打扰。

很长一段时间我不明白如何防止ListView重新加载并将我放回列表的顶部,但后来我意识到我只需要初始化一个新适配器并调用setListAdapter一次,之后每次只调用notifyDataSetChanged. 之前,我也打电话给setListAdapter,从而让我回到了顶部。

于 2014-08-08T23:21:58.543 回答