寫代碼之前,先得思考一下,我是這樣想的,監(jiān)聽item的位置,如果是滑動(dòng)到最后一項(xiàng),觸發(fā)加載更多的事件,所以難點(diǎn)是如何監(jiān)聽到滑動(dòng)到最后一項(xiàng)item?
強(qiáng)大的RecylerView已經(jīng)為我們提供了類似的方法:通過RecylerView的布局管理器mRecylerViewLayoutManager.findLastVisibleItemPosition()就可以得到最后一項(xiàng)的position
具體請(qǐng)看代碼:
recyclerView.addOnScrollListener(newRecyclerView.OnScrollListener() {@Overridepublic voidonScrolled(RecyclerView recyclerView,intdx,intdy){super.onScrolled(recyclerView,dx,dy);lastVisibleItemPosition=recylerviewLayoutManager.findLastVisibleItemPosition();if(lastVisibleItemPosition+1>=adapter.getItemCount()){pageNum++;//如果已經(jīng)滑動(dòng)到最后一項(xiàng),加載新的數(shù)據(jù)loadData();}? ? }@Overridepublic voidonScrollStateChanged(RecyclerView recyclerView, intnewState) {super.onScrollStateChanged(recyclerView,newState);}});
已經(jīng)加載了新的數(shù)據(jù),這時(shí)只需要把新的數(shù)據(jù)加到適配器的數(shù)據(jù)中。
adapter,addAll(list);