LinearLayout / ScrollView中的无限滚动?

时间:2011-03-22 01:19:09

标签: android scroll scrollview android-linearlayout infinite

我知道以某种方式可以使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();
    }
}

2 个答案:

答案 0 :(得分:0)

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

所以基本上创建一个类,它包含你所展示的部分。将第一个添加到scrollview中。当您点击底部时,请创建另一个包含下一个数据的视图并使用scrollviews_layout.addview(view_holding_the_new_data)

答案 1 :(得分:0)

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

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

最长的时间我不明白如何让ListView重新加载并让我回到列表的顶部,但后来我意识到我只需要初始化一个新的适配器并调用{{ 1}}一次,之后每次只调用setListAdapter。在此之前,我还打电话给notifyDataSetChanged,从而让我回到顶端。