• 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) {
                  ...
              }
          }
      });
  • 相关阅读:
    APP-Android:APK
    软件-版本控制:VCS(版本控制系统)
    协议-网络-安全协议-SSH(安全外壳协议):百科
    un-解决方案-BIM:百科
    MySQL:常用语句
    rsync+inotify-tools文件实时同步
    Java实现 Leetcode 169 求众数
    Java实现 Leetcode 169 求众数
    Java实现 LeetCode 137 只出现一次的数字
    Java实现 LeetCode 137 只出现一次的数字
  • 原文地址:https://www.cnblogs.com/uoky/p/15662127.html
Copyright © 2020-2023  润新知