1. 程式人生 > 其它 >Android Adapter分頁顯示異常: 首頁資料在螢幕內全顯示,無法上滑分頁

Android Adapter分頁顯示異常: 首頁資料在螢幕內全顯示,無法上滑分頁

前情提要:

  Android 端Adapter分頁,下拉重新整理,上滑分頁,

  原有流程:上滑時,滑動觸及底部,觸發Adapter的onScrolled的方法

  異常情況:第一頁資料完全顯示,導致上滑時,未觸及底部,未觸發Adapter的onScrolled的方法

  修復:

    第一頁資料完全顯示時,上滑無法觸發Adapter的onScrolled,

    判斷,如果第一頁資料在當前螢幕完全顯示,則將資料的分頁處理,放在onScrollStateChanged方法中處理

    • 判斷當前Adapter的第一項item的高度(僅適用於,列表的每一項item高度一致)  
    • 觸發onScrollStateChanged方法時,判斷當前itemHeight * count 是否大於 當前RecyclerView的完全高度(取的是RecyclerView的父級的高度)
    • 如果大於,則不做處理,此時會觸發onSrolled方法
    • 如果小於,則進行分頁資料處理
  • myRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            if (adapter.getItemHeight() * (adapter.getItemCount() - 1) < parentLayout.getHeight() && newState == SCROLL_STATE_IDLE) {
               
    // 資料一頁顯示完全,進行分頁處理 ... } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int lastItemPosition = mLayoutManager.findLastCompletelyVisibleItemPosition(); if (lastItemPosition + 1 == adapter.getItemCount() && dy > 0) { ... } } });