我需要创建一个listView,一次加载10个下载的项目(它们存储在Json对象上),然后当用户滚动到最后一个元素时,listView加载另外10个项目,依此类推......我尝试了各种各样的我找到的外部项目的解决方案,但没有一个工作,现在我想知道,是否有可能使用Json一次只下载n个项目,然后实现一个listView监听器,所以当用户滚动到最后一个元素列表再次调用下载Json的后台任务?
答案 0 :(得分:1)
我正在使用像这样的滚动侦听器:
public class AutomaticLoadScrollListener implements AbsListView.OnScrollListener {
private int currentFirstVisibleItem;
private int currentVisibleItemCount;
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
this.currentFirstVisibleItem = firstVisibleItem;
this.currentVisibleItemCount = visibleItemCount;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (currentVisibleItemCount > 0 && 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! ***/
// LOAD DATA
}
}
}
只需将其设置为scrollListener,它应该可以工作:
listView.setOnScrollListener(new AutomaticLoadScrollListener());
致谢:我发现它here
答案 1 :(得分:1)
考虑建立分页系统,逐页获取记录,滚动完成结束时获得下一个10项,然后获得下一个10项,直到达到您的列表大小。