我想在Android ListView组件上实现无限滚动,当滚动到列表中的最后一个元素时,它会将新项添加到listview的底部。
答案 0 :(得分:35)
实现onscrolllistener()
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
this.currentFirstVisibleItem = firstVisibleItem;
this.currentVisibleItemCount = visibleItemCount;
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
this.currentScrollState = scrollState;
this.isScrollCompleted();
}
private void isScrollCompleted() {
if (this.currentVisibleItemCount > 0 && this.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! ***/
if(!isLoading){
isLoading = true;
loadMoreDAta();
}
}
}
当您实现并将此侦听器添加到listview时,这将检测listview的结尾,因为滚动位置位于列表末尾,只是获取更多数据。在加载数据期间,当滚动位置结束时,您需要一个标志一次加载数据。因此,如果数据正在加载,并且在此期间您向上滚动然后向下滚动,那么它将无法获得更多数据用于执行。
答案 1 :(得分:9)
尝试OnScrollListener只需将项目添加到
中的ListView
即可
public void onScroll(AbsListView view,
int firstVisible, int visibleCount, int totalCount) {
// Add the items
}
}
并且,设置adapter.notifyDataSetChanged()
会在ListView
中显示已添加的项目。在这里,我举例说明如何将onScrollListener
与您的ListView集成