目錄

Android Java - 簡易今日頭條 - Load More 加載更多新聞內容

前言

上一篇我們說到了下拉刷新的實現,這篇我接著講如何實現上拉加載更多

Display

/android_java_recyclerview_load_more/index/Display_load_more.gif
加載更多展示

項目倉庫

簡易今日頭條 - Github

具體實現

這裡需要使用 RecyclerView 的監聽滾動方法,當無法在往下滾動的時候,就調用加載更多的方法。

以下是 RecyclerView 設置滾動監聽的參考案例:

這裡使用了 addOnScrollListener 方法做滾動監聽,接著在 onScrolled 方法中做處理,!recyclerView.canScrollVertically(1) 代表 recyclerView 已經無法繼續往下滾了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
// cardList
mCardListRecyclerView = view.findViewById(R.id.recycler_view_card_list);
mCardListRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(@NonNull @NotNull RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(@NonNull @NotNull RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        if (!recyclerView.canScrollVertically(1)) { // 1 for down
            loadMoreNews();
        }
    }
});

這裡比較需要注意的地方是如果需要在加載更多後的 mCardListAdapter使用 notifyDataSetChanged() 方法更新頁面的 Item 渲染

1
2
3
4
mCardListAdapter.setDataModelList(tempCardDataModelList);
Log.v("after load more", "card list size: " + mCardListAdapter.getItemCount());
mIsLoadMore = false;
mCardListAdapter.notifyDataSetChanged();

Reference