【问题标题】:android - progressive loading of listandroid - 列表的渐进式加载
【发布时间】:2011-09-13 06:32:21
【问题描述】:

我正在开发一个应用程序,我需要在列表中显示大量数据,比如 100 个项目。我正在考虑像 facebook 应用程序那样实现它,一旦用户向下滚动到列表底部,就会逐步加载所有数据。 谁可以帮我这个事? 另外,如果这不起作用,你能提出一些实施这个的想法吗?我想到的一件事是将“加载更多”选项放在菜单中,然后反复调用更多数据。

谢谢!

【问题讨论】:

    标签: android list listview


    【解决方案1】:

    【讨论】:

    • 感谢您的链接。我无法投票,因为我是 stackoverflow 的新手并且没有足够的声誉。将来肯定会这样做:)
    【解决方案2】:

    您应该使用onScrollListener 并根据剩余的项目数量加载更多。 IE 通过使用索引号、开始和结束调用 web 服务。

    这是我使用的一个示例:在此示例中,我总是从服务器获取接下来的 15 个项目。第一个 if 情况是它在只剩下 x 个项目时开始获取新项目。 X 是屏幕上可见项目数的 2*。这取决于屏幕密度。

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        if((totalItemCount-(firstVisibleItem+visibleItemCount) <= visibleItemCount*2)) {
            startNumber = totalItemCount;
            endNumber = startNumber+15;
            if(fetchclass!=null) {
                if(!fetchclass.isRunning()) {
                    fetchclass= new fetchNewsClass();
                    fetchclass.execute(startNumber,endNumber);
                }
            }
            else {
                fetchclass = new fetchNewsClass();
                fetchclass.execute(startNumber,endNumber);
            }
        }
    }
    

    startNumber 和 endNumber 只是我用来调用 web 服务以从服务器获取正确数据的索引号。 fetchclass 是我用来获取数据的 AsyncTask。

    【讨论】:

    • 能否为您的示例提供完整的工作代码?那真的很有帮助!
    • 不是真的,因为我不会为你做这项工作,而且可能没有其他人会在 stackoverflow 上这样做。我刚刚有 listview.setonScrollListener(this),然后实现了 onScrollListener。你必须自己做的 fetchclass 因为它取决于你的网络服务。
    猜你喜欢
    • 2018-04-04
    • 2015-06-22
    • 1970-01-01
    • 2014-11-01
    • 2017-08-28
    • 2013-08-24
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多