31

我想在一个 android ListView 组件上实现无限滚动,当滚动到列表中的最后一个元素时,它会将新项目添加到列表视图的底部。

4

2 回答 2

35

实现 onscrolllistener()

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
    this.currentFirstVisibleItem = firstVisibleItem;
    this.currentVisibleItemCount = visibleItemCount;
}

public void onScrollStateChanged(AbsListView view, int scrollState) {
    this.currentScrollState = scrollState;
    this.isScrollCompleted();
 }

private void isScrollCompleted() {
    if (this.currentVisibleItemCount > 0 && this.currentScrollState == SCROLL_STATE_IDLE) {
        /*** In this way I detect if there's been a scroll which has completed ***/
        /*** do the work for load more date! ***/
        if(!isLoading){
             isLoading = true;
             loadMoreDAta();
        }
    }
}

当您实现并将此侦听器添加到您的列表视图时,这将检测到列表视图的末尾,因为滚动位置位于列表末尾只是获取更多数据。在加载数据期间,您需要一个标志来在滚动位置结束时立即加载数据。因此,如果数据正在加载并且在此期间您向上滚动然后向下滚动,那么它将不会获得更多数据进行复制。

于 2012-09-25T12:57:16.707 回答
9

尝试使用OnScrollListener只需将项目添加到您ListView

public void onScroll(AbsListView view,
    int firstVisible, int visibleCount, int totalCount) {

    // Add the items

    }
}

并且,设置您adapter.notifyDataSetChanged()将在您的此处显示添加的项目ListView我给您一些示例,说明如何onScrollListener与您的 ListView集成

  1. Android 无尽列表

  2. 无限滚动列表视图

  3. 无尽的列表视图

于 2012-09-25T14:22:21.780 回答