いつも調べて思い出すことが多いので、メモとして残しておこうと思います。
・リストの先頭かどうか
上記は以下で判断が可能です。
recyclerView.canScrollVertically(-1).not()
・リストの末尾かどうか
上記はcanScrollVerticallyの引数を反転させれば判断が可能です。
recyclerView.canScrollVertically(1).not()
・onScrolledでの実装
onScrolledで見たいケースが殆どだと思いますが、大体以下のような実装になるかと思います。
binding.recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
if (recyclerView.canScrollVertically(-1).not()) {
// リストの先頭に来た時の処理
}
if (recyclerView.canScrollVertically(1).not()) {
// リストの末尾に来た時の処理
}
}
})
さいごに
こういう細かい実装って忘れがちですよね。
細かい実装の検索コストでも数を重ねると馬鹿にできないので、なるべく残していこうと思います。