Android 判断RecyclerView是否滚动到底部

需求:列表滚动后,判断是否滚动到底部,展示加载更多的Loading文案和动画

Kotlin 复制代码
 binding.watchMoreRv.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                //获取layoutManager
                val layoutManager = recyclerView.layoutManager as LinearLayoutManager
                //获取item个数
                val totalItemCount = layoutManager.itemCount
                //最后一个可见item的位置
                val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()
                //当前并不在请求,不是最后一个页面
                if (!isLoading && !isLastPage && lastVisibleItemPosition == totalItemCount - 1
                    && recyclerView.scrollState == RecyclerView.SCROLL_STATE_IDLE
                ) {
                    runOnUiThread {
                        curMorePage++
                        isLoading = true
                        homeMoreAdapter?.setLoading(true)
                    }
                    Handler(Looper.getMainLooper()).postDelayed({
                        loadMoreData()
                    }, 2000)
                }
            }
        })

tips:recyclerView.scrollState == RecyclerView.SCROLL_STATE_IDLE 这个判断条件很重要哦。

  • SCROLL_STATE_IDLE:值为0,RecyclerView 当前处于 空闲状态,没有滚动操作正在进行。这是默认状态,当滚动停止时会切换到该状态。
  • RecyclerView.SCROLL_STATE_DRAGGING:值为1,RecyclerView 当前正在被用户拖动。用户用手指滑动屏幕时进入该状态。
  • RecyclerView.SCROLL_STATE_SETTLING:值为2,RecyclerView 当前正在 惯性滚动。用户手指松开后,列表仍在由于惯性继续滑动时的状态。
相关推荐
传奇开心果编程7 小时前
【Flutter入门练中学】第11课:状态管理进阶与声明式路由
android·学习·flutter·ui·ios
JasonSJX8 小时前
四端自建播放器怎么落地:Android、iOS、tvOS、Tizen 的 DRM 播放 SDK 技术盘点
android·ios·音视频·视频防录屏·加密保护课程·直播安全
驰骋工作流8 小时前
工作流引擎四大流程模块功能点统计:769 项能力清单梳理低代码工作流引擎表单
android·低代码·rxjava
恋猫de小郭8 小时前
Flutter 多窗口重要优化合并,多窗口性能和实用性大幅提升
android·前端·flutter
AirDroid_cn8 小时前
实时定位孩子手机超便捷!iPhone家长同步收提醒,省心又踏实
android
hai_android9 小时前
LruCache 图片浏览器内存缓存
android·java·kotlin
今天要早睡_9 小时前
C++入门到精通:类和对象(下)全方位解析
android·c++
Godikov14 小时前
在 Android 上跑 Kafka Consumer:一个实时定位数据接入的踩坑记录
android
mmsx14 小时前
Android 自定义 View 三关:触摸分发、绘制与坐标错位
android·kotlin
JMchen14 小时前
自定义View在复杂业务场景中的实战
android·kotlin·canvas