はじめに
皆さん、ごきげんよう!れぶです!
今回の記事では、RecyclerView
をスクロールした場合、最後のアイテムが完全に表示されているかを検知する方法について書きます。
2分以内で読めます。それでは、参りましょう!!
開発環境
- MacBook Air
- Android Studio Electric Eel | 2022.1.1
- Kotlin
- compileSdkVersion 33
- minSdkVersion 21
サンプルコード
以下のようにOnScrollListener
のonScrolled()
内で、RecyclerViewのLayoutManager
に対してfindLastCompletelyVisibleItemPosition()
を呼び出します。
MainActivity.kt
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
val totalItemCount = layoutManager.itemCount
val lastVisibleItem = layoutManager.findLastCompletelyVisibleItemPosition()
if (lastVisibleItem == totalItemCount - 1) {
// 最後のアイテムの底までスクロールされた
// ここに処理を追加する
}
}
})
findLastCompletelyVisibleItemPosition()と似たメソッドに、findLastVisibleItemPosition()
が存在します。
このfindLastVisibleItemPosition()
は、最後に表示されるアイテムの一部が少しでも表示されていれば、その位置を返してしまいます。一方、findLastCompletelyVisibleItemPosition()
は最後に完全に表示されているアイテムの位置を返すため、今回はこちらを使用します。
以上です。ありがとうございます。