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 当前正在 惯性滚动。用户手指松开后,列表仍在由于惯性继续滑动时的状态。
相关推荐
一条上岸小咸鱼6 分钟前
Kotlin 基本数据类型(四):String
android·前端·kotlin
Onion_991 小时前
学习下Github上的Android CICD吧
android·github
来来走走1 小时前
Flutter Form组件的基本使用
android·flutter
顾林海2 小时前
Android MMKV 深度解析:原理、实践与源码剖析
android·面试·源码阅读
雨白3 小时前
TCP/IP 核心概念详解:从网络分层到连接管理
android
Wgllss3 小时前
雷电雨效果:Kotlin+Compose+协程+Flow 实现天气UI
android·架构·android jetpack
用户207038619495 小时前
Compose 可点击文本:ClickableText Compose 中的 ClickableSpan
android
常利兵6 小时前
Kotlin作用域函数全解:run/with/apply/let/also与this/it的魔法对决
android·开发语言·kotlin
幼稚园的山代王6 小时前
Kotlin-基础语法练习一
android·开发语言·kotlin
闻不多6 小时前
用llamaindex搭建GAR遇到400
android·运维·服务器