You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kotlin中如何获取RecyclerView最后一项的位置?

在Kotlin中获取RecyclerView最后一项位置的方法

嗨,其实这个问题超容易解决~因为Kotlin和Java是完全兼容的,Java里的相关方法在Kotlin里直接就能用,只是写法更简洁清爽而已!我给你分情况说明:

一、针对LinearLayoutManager/GridLayoutManager(普通线性/网格布局)

这两种布局管理器的处理方式和Java几乎一样,只是变量声明更简洁:

  1. 先获取RecyclerView的LayoutManager(别忘了强转成对应的类型)
  2. 直接调用findLastVisibleItemPosition()方法就行

示例代码:

// 假设你的RecyclerView实例叫recyclerView
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition()
// 拿到位置后就可以做你需要的逻辑啦

如果是GridLayoutManager,把强转的类型换成GridLayoutManager就行,方法是完全一致的。

二、针对StaggeredGridLayoutManager(瀑布流布局)

瀑布流因为有多列,每列的最后可见项位置可能不同,所以需要先获取每列的最后位置,再取最大值:

val staggeredLayoutManager = recyclerView.layoutManager as StaggeredGridLayoutManager
// 创建数组存储每列的最后可见位置,长度等于列数
val lastVisiblePositions = IntArray(staggeredLayoutManager.spanCount)
// 填充数组
staggeredLayoutManager.findLastVisibleItemPositions(lastVisiblePositions)
// 取数组中的最大值,就是整个RecyclerView的最后可见项位置
val lastVisibleItemPosition = lastVisiblePositions.maxOrNull() ?: 0

额外补充:获取最后一项的实际位置(不管是否可见)

如果你要的不是“可见的最后一项”,而是RecyclerView中最后一个存在的项的位置,直接用总项数减1就行:

val lastItemPosition = recyclerView.adapter?.itemCount?.minus(1) ?: -1
// 这里用了安全调用和Elvis运算符,避免空指针异常

内容的提问来源于stack exchange,提问作者Ankita

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:35:15