许多项目已经用到了滑动到底自动开始加载数据的效果,替代用力上拉加载更多的效果,例如网易新闻,新浪微博。介绍一下我的思路
1.如果你当前屏幕第一个Item的位置(firstVisibleItem )+你当前屏幕可见item的数量==ListView中item的数量(这里可以理解—-ListView中总的item的数量就是ListView中最后一个item的位置),也就是当前已经滑动到最后一个item时,开始加载新数据
2.ListView中position的位置计算是从header开始的,如果给listview加入了header和footer,还要判断当前的item是否只是你加入footer视图的位置(totalItemCount != mListView.getHeaderViewsCount()
+ mListView.getFooterViewsCount())
3.以及添加给适配器的数据不是空数据
mListView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (mLoadingFooter.getState() == LoadingFooter.State.Loading||mLoadingFooter.getState() == LoadingFooter.State.TheEnd) {
return;
}
if (firstVisibleItem + visibleItemCount >= totalItemCount && totalItemCount != 0&& totalItemCount!=mListView.getHeaderViewsCount()
+ mListView.getFooterViewsCount() && mAdapter.getCount() > 0 && hasmore) {
loadNextPage();
}
}
});