Android - ListView在到达结束时加载更多项目

时间:2013-12-08 20:13:04

标签: android android-listview android-arrayadapter

我已经成功实现了一个listView,其中每一行都是我创建的对象。 我有一个接口读取一些对象并返回它们的数组,我将其传递给适配器构造函数。 我想要做的是,由于列表可能很长,我的界面允许每次读取更多的项目(第0页,第1页......)所以我想,当用户到达列表的最后一行时,加载下一页并将其插入listView。 这样做的正确方法是什么? 我实际上希望“到达列表末尾”触发回调,我可以请求更多页面并将它们加载到列表中。 我的主要问题有点旧,但我不介意使用baseAdapter,两者都可以工作,我只是不知道什么对任务更好。

1 个答案:

答案 0 :(得分:31)

您可以在listView上添加一个页脚,该页脚将有一个名为LoadMore的按钮。这是一个完整的教程ListView with Load More Button  或者,您可以实现onscrolllistener()并将此侦听器添加到ListView

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();
        }
    }
}

希望它会有所帮助