【问题标题】:detect scroll down in listView android在listView android中检测向下滚动
【发布时间】:2013-10-17 16:43:16
【问题描述】:

我有一个要求

我有大量数据必须放在列表视图中,加载所有数据并填充到列表视图中太愚蠢了,所以我从服务器加载 10 个第一项并填充到列表视图中。

所以每次用户在列表视图底部向下滚动(他们查看了所有前 10 个项目)我的应用程序将自动加载下一个 10 项目。

问题是:无论如何我可以检测到用户是否在前 10 个项目的底部?

对不起我的英语。感谢您的帮助!

【问题讨论】:

  • 请参阅this answer 以获得解决您问题的优雅解决方案。

标签: android android-listview


【解决方案1】:

可以通过以下代码检测滚动结束

if (yourListView.getLastVisiblePosition() == yourListView.getAdapter().getCount() -1 &&
    yourListView.getChildAt(yourListView.getChildCount() - 1).getBottom() <= yourListView.getHeight())
{
    //It is scrolled all the way down here

}

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您可以为 OnScroll 事件注册一个侦听器,然后检测您必须从哪里开始重新加载数据:

    ListView listView = (ListView)findViewById(R.id.list_view_id);
    listView.setOnScrollListener(new OnScrollListener() {
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int amountVisible, int totalItems) {
                //now get the point where you have to reload data
                if (firstVisibleItem+1 + amountVisible > totalItems) {
                    //reload your data here
                }
            }
        });
    

    【讨论】:

      【解决方案3】:

      数据从何而来?通常通过游标从数据库加载大型数据集,然后使用简单的游标适配器填充列表视图。 (我说的是 10,000 行)。只要您在后台(光标加载器)执行此操作,这应该不是问题,而且可能比尝试自己管理滚动要容易得多。

      【讨论】:

        【解决方案4】:

        试试this,它实现了一个列表视图,当用户到达底部时会拉出更多项目,当加载更多项目时也会在底部使用进度条。 我以前用过它,它可以很好地满足您的需求。

        【讨论】:

        • 非常感谢。我尝试运行该示例,它运行良好,但是当我尝试将它实现到我的项目中并执行代码时,JavaClassCast Exeption 被抛出“不能将 androi.wiget.ListView 转换为 com.costum.android.widget .PullAndLoadListView" 在我的项目中,我自定义了一个适配器并将其填充到 PullAndLoadListView 。它显示完美,但是当执行此代码((PullAndLoadListView)getListView())时出现上面的异常。任何的想法 ?请帮助我
        • 你是用 com.costum.android.widget.PullAndLoadListView 而不是 ListView 写你的 xml 的吗?
        猜你喜欢
        • 2013-05-23
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 2015-02-02
        • 2013-10-20
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        相关资源
        最近更新 更多