4

我想在显示最后一行时在列表视图中加载数据。我正在为列表视图编写滚动事件。

现在如何检测列表视图显示最后一行?

有人可以帮我吗?

4

4 回答 4

5
        lv.setOnScrollListener(new OnScrollListener() {
        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // Check if the last view is visible
            if (++firstVisibleItem + visibleItemCount > totalItemCount) {

                // if so, download more content

                }
            }
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub

        }
    });
于 2012-07-18T08:48:34.783 回答
0

在列表视图中试试这个..它对我来说很好..

((ScrollView) findViewById(R.id.scrollDowns)).fullScroll(View.FOCUS_DOWN);
于 2012-07-18T09:34:47.023 回答
0

slezadav 的上述实现可能会在边缘条件下导致错误。页面中第一个可见项目和项目的总和可能比预期多或少 1 个计数。在我改用新方法之前,我一直在使用相同的东西。我所做的是在listview的适配器上放置一个侦听器,并在getview中检查是否(位置==要显示的数组中项目的totalItemCount),如果是,我从适配器调用我的侦听器,侦听器将从api中提取更多数据. 非常简单

于 2013-04-18T08:53:27.227 回答
0

您可以使用Amazing ListView来自动加载下一页(即最后一项上的“正在加载...”)。

列表视图与

根据文档实现这些方法:

  • onNextPageRequested当用户滚动列表直到“加载”指示器可见时调用。这是在 UI 线程上调用的,因此如果您有一些网络请求,请确保在后台执行此操作。还给出了页码。

默认情况下,您将被视为在最后一页,并且您不会在列表底部看到任何“正在加载...”消息。您需要控制是否还有页面要显示。

  • notifyMayHaveMorePages表示我们还有更多数据,因此将显示“正在加载...”消息。
  • notifyNoMorePages表示我们已经加载了所有数据,因此不再显示“正在加载...”消息。
  • nextPage增加页码。在将新数据附加到适配器时执行此操作。
  • resetPage将页码重置为 1(或由 指定的值setInitialPage)。

所以你需要做的是在onNextPageRequested被调用时获取更多数据。并nextPage在您将新数据附加到适配器时调用。

于 2012-07-18T08:48:55.547 回答