zoukankan      html  css  js  c++  java
  • 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) {
                  ...
              }
          }
      });
  • 相关阅读:
    《编写高质量代码Web前端开发修炼之道》(读书笔记) windrainpy
    jQuery琐碎笔记 windrainpy
    【记录】事件冒泡和事件捕获 windrainpy
    JS比较容易迷惑的几个地方 windrainpy
    【转】成为顶级程序员的唯一途径! windrainpy
    jquery键盘事件 windrainpy
    【转】IE绝对定位元素神秘消失或被遮挡的解决 windrainpy
    简单算法
    HTTP的状态
    css的兼容问题
  • 原文地址:https://www.cnblogs.com/uoky/p/15662127.html
Copyright © 2011-2022 走看看