LinearLayoutManagerの
findFirstVisibleItemPosition()
findLastVisibleItemPosition()
はそれぞれ何を返してるのか気になったので調べてみた。
findFirstVisibleItemPosition()
公式にはこう書いてある
Returns the adapter position of the first visible view.
このfirst visibleが実際どんな意味なのかちょっと気になったので調べてみた。
あとremoveAndRecycleViewAtとかで子供を殺した時はどうなるのかなとか
結論言っちゃうとほんとにその時見えているものベースで判断するらしい。
たとえば以下のようにViewのリストがあるとする
[0,1,2,3,4]
最初は0,1,2が見えているとすると
この時
findFirstVisibleItemPosition()
で取れる値は
先頭の0となる
そのままスクロールしていき、画面に見えている要素が[1,2,3]となっていたら
findFirstVisibleItemPosition()
で取れる値は
先頭の1となる
スクロールを戻してまた画面に見えている要素が[0,1,2]となっていたら
0が返る
0が画面外に出たのでremoveAndRecycleViewAtで先頭(0番目)を消した場合
スクロールを戻しても0は出てこず見えてる要素が[1,2]になると思う
そしたら当然
findFirstVisibleItemPosition()は
1を返す
findLastVisibleItemPosition()はちゃんと動き見てないけどまあ同じことだろうと思う。