Android - ListView 在到达结束时加载更多项目[关闭]

Posted

技术标签:

【中文标题】Android - ListView 在到达结束时加载更多项目[关闭]【英文标题】:Android - ListView to load more items when reached end [closed] 【发布时间】:2013-12-25 20:17:10 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以在 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();
        
    

希望对你有帮助

【讨论】:

谢谢,我会试试看结果如何:) 为什么不使用 java.util.concurrent.Semaphore 让事情变得更加稳固? @Md. Monsur Hossain Tonr onScrollListener 的类在哪里 我们必须在哪里设置isLoading false? @pRaNaY 你应该在loadMoreData() 完成后重置isLoading

以上是关于Android - ListView 在到达结束时加载更多项目[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在listview和scrollview结束时关闭wave动画

Flutter ListView.builder 创建一个无限滚动。如何将其设置为在内容结束时停止?

在“ListView”中拖放

如何将数据添加到 listView 的自定义 BaseAdapter - Android

Android 应用中的动态 ListView

android listview如何按时加滚动到顶部?