LoginSignup
6
5

More than 5 years have passed since last update.

findFirstVisibleItemPosition()って何返してるのか気になったので調べた

Last updated at Posted at 2015-03-11

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()はちゃんと動き見てないけどまあ同じことだろうと思う。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5