美文网首页
RecyclerView列表滑到自动加载更多

RecyclerView列表滑到自动加载更多

作者: 满天星爱我 | 来源:发表于2018-09-25 12:29 被阅读174次
1、给RecyclerView添加滚动监听:
     //添加监听
     addOnScrollListener(mOnScrollListener);
2、在onScrolled方法中
    @Override
         public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        LayoutManager layoutManager = recyclerView.getLayoutManager();
            int mLastChildPosition = layoutManager .findLastVisibleItemPosition();
            int itemTotalCount = layoutManager .getItemCount();
            View lastChildView = layoutManager .getChildAt(layoutManager .getChildCount()-1);
            if (lastChildView == null) return;
            int lastChildBottom = lastChildView.getBottom();
            int recyclerBottom = recyclerView.getBottom();
            if (mLastChildPosition == itemTotalCount - 1 && lastChildBottom == recyclerBottom) {
                if (isCanLoadMore && listener != null) {
                    //业务代码
                    listener.loadMore();
                }
            }
    }

思路:

  • 判断当前屏幕可显示的最后一个item的当前位置下标等于最后一个item的位置下标
  • 当前屏幕可显示的最后一个item的bottom值等于recyclerView的bottom值

满足这两个条件即可触发自动加载更多

各方法分析:

  • layoutManager.findLastVisibleItemPosition
    获取当前屏幕可显示的最后一个item的位置下标

  • layoutManager.getItemCount()
    获取当前总item个数

  • layoutManager.getChildCount()
    获取当前屏幕可显示的item的个数

  • layoutManager.getChildAt(int position)
    获取当前位置的view
    注意此方法只能获取屏幕显示的部分,如屏幕当前显示6个item,此时position只能传0到5,否则获取不到View

  • lastChildView.getBottom()
    获取当前屏幕显示的最后一个item的bottom值

  • recyclerView.getBottom()
    获取recyclerView的bottom值

相关文章

网友评论

      本文标题:RecyclerView列表滑到自动加载更多

      本文链接:https://www.haomeiwen.com/subject/dtnrfftx.html