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) {
                  ...
              }
          }
      });
  • 相关阅读:
    字符编码
    数据类型
    流程控制之判断,while循环,for循环
    数据类型,与用户交互,格式化输出,基本运算符
    操作系统,编程语言分类,执行python两种方式,变量,内存管理,定义变量的三个特征
    计算机硬件基础-笔记
    20200714_31adb命令和monkey压力稳定性测试
    20200707_28POM
    20200705_27DDT与Yaml数据驱动
    20200702_26UnitTest套件与运行器
  • 原文地址:https://www.cnblogs.com/uoky/p/15662127.html
Copyright © 2011-2022 走看看