我有一个要求
我有一个大数据必须放在列表视图中,加载所有数据并填充到列表视图中太愚蠢了,所以我从服务器加载 10 个第一项并填充到列表视图中。
所以每次用户在列表视图底部向下滚动(他们查看了所有前 10 个项目)我的应用程序将自动加载下一个 10 项目。
问题是:无论如何我可以检测到用户是否在前 10 个项目的底部?
对不起我的英语。感谢您的帮助!
我有一个要求
我有一个大数据必须放在列表视图中,加载所有数据并填充到列表视图中太愚蠢了,所以我从服务器加载 10 个第一项并填充到列表视图中。
所以每次用户在列表视图底部向下滚动(他们查看了所有前 10 个项目)我的应用程序将自动加载下一个 10 项目。
问题是:无论如何我可以检测到用户是否在前 10 个项目的底部?
对不起我的英语。感谢您的帮助!
您可以通过以下代码检测滚动的结束
if (yourListView.getLastVisiblePosition() == yourListView.getAdapter().getCount() -1 &&
yourListView.getChildAt(yourListView.getChildCount() - 1).getBottom() <= yourListView.getHeight())
{
//It is scrolled all the way down here
}
希望能帮助到你。
您可以为 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
}
}
});
试试这个,它实现了一个列表视图,当用户到达底部时会拉出更多项目,当加载更多项目时也会在底部使用进度条。我以前用过它,它可以很好地满足您的需求。
数据从何而来?通常通过游标从数据库加载大型数据集,然后使用简单的游标适配器填充列表视图。(我说的是 10,000 行)。只要您在后台(光标加载器)执行此操作,这应该不是问题,而且它可能比尝试自己管理滚动要容易得多。