使用findLastCompletelyVisibleItemPosition()實現上滑加載新數據

頁面加載相關代碼:

recyclerView.addOnScrollListener(new OnLoadMoreListener() {
	@Override
    public void onLoadMore() {
		if (canLoadMore) {
			canLoadMore = false;  //
			presenter.doLoadMoreData(); //加載數據並顯示
		}
	}
});

監聽器:

public abstract class OnLoadMoreListener extends RecyclerView.OnScrollListener {
    private LinearLayoutManager layoutManager;
    private int itemCount, lastPosition, lastItemCount;
    public abstract void onLoadMore();

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
            layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
            itemCount = layoutManager.getItemCount();
            lastPosition = layoutManager.findLastCompletelyVisibleItemPosition();
        } else {
            Log.e("OnLoadMoreListener", "The OnLoadMoreListener only support LinearLayoutManager");
            return;
        }

        if (lastItemCount != itemCount && lastPosition == itemCount - 1) {
         //lastItemCount 是爲了防止加載數據後,位置仍然符合lastPosition == itemCount - 1,因此會繼續加載
            lastItemCount = itemCount;
            this.onLoadMore();
        }
    }
}

Android使用LayoutManager的findFirstCompletelyVisibleItemPosition和findLastCompletelyVisibleItemPosition判斷是否加載新數據注意

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章