RecyclerView列表滑到自动加载更多

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值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【Android 控件 RecyclerView】 概述 RecyclerView是什么 从Android 5.0...
    Rtia阅读 307,884评论 27 439
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,975评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,593评论 25 708
  • 昔日寒山问拾得曰:世间谤我、欺我、辱我、笑我、轻我、贱我、恶我、骗我、如何处治乎? 拾得云:只是忍他、让他、由他、...
    梨花颂阅读 288评论 0 1
  • 去年七月份时,刚刚放暑假,天气热的要死,出个门我能黑一圈。 在某个骄阳似火的中午,我刚要休息,一阵悦耳的铃声响起,...
    顾绾君阅读 268评论 0 0