document.write("");

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) {
                ...
            }
        }
    });

     

posted @ 2021-12-08 16:14  人间春风意  阅读(123)  评论(0编辑  收藏  举报