写代码之前,先得思考一下,我是这样想的,监听item的位置,如果是滑动到最后一项,触发加载更多的事件,所以难点是如何监听到滑动到最后一项item?
强大的RecylerView已经为我们提供了类似的方法:通过RecylerView的布局管理器mRecylerViewLayoutManager.findLastVisibleItemPosition()就可以得到最后一项的position
具体请看代码:
recyclerView.addOnScrollListener(newRecyclerView.OnScrollListener() {@Overridepublic voidonScrolled(RecyclerView recyclerView,intdx,intdy){super.onScrolled(recyclerView,dx,dy);lastVisibleItemPosition=recylerviewLayoutManager.findLastVisibleItemPosition();if(lastVisibleItemPosition+1>=adapter.getItemCount()){pageNum++;//如果已经滑动到最后一项,加载新的数据loadData();} }@Overridepublic voidonScrollStateChanged(RecyclerView recyclerView, intnewState) {super.onScrollStateChanged(recyclerView,newState);}});
已经加载了新的数据,这时只需要把新的数据加到适配器的数据中。
adapter,addAll(list);