ListViewのsetSelectionFromTopでViewが完全に画面外に配置されるとまずい

ListView の setSelectionFromTop(position,top) を利用するときに、positionで指定したViewが画面外に配置されるような座標を指定すると、子のViewが生き残ってしまって、getChildCount() やら getFirstVisiblePosition() やら getLastVisiblePosition() が期待はずれの値を返すようになってしまう。
たとえば、setSelectionFromTop(100,-10000)みたいなことをすると、position=100のViewは完全に画面外なのに子のViewとして存在してしまい、getFirstVisiblePosition() は 100 になってしまう。(画面をタッチして少しでもスクロールすると正常な状態に戻る)
...ということに昨日気付いた。


Tuboroidonでアンカをクリックしたときに時々飛ばなくなる問題もこれで解決できる(はず)なんだけど、昨日は時間が無くて修正できなかった。
それで今朝2ch見たら...

505 :名無しさん@お腹いっぱい。:2010/11/12(金) 03:52:44 ID:qiYe9UZf
ろいどんでアンカー飛ばない条件分かった
壺の時からあったバグだけどボリュームキーでスクロールしてるとスクロールバーが消える時があるよね
その状態だとアンカー飛ばなくなる

■ Android用2chブラウザを語るスレ【専ブラ】Part7 ■

すごい。感動した。