ブログBlog
布内です
投稿日:2014年06月04日
この間、『setSelectionFromTop()』というメソッドに頭を悩まされました。
setSelectionFromTop(int Position, int y)
と書き、Position番目のセル(0から数える)を表示テーブルの一番上からyピクセル下の位置にスクロールさせます。
以前の日記で書いた『UITableViewScrollPositionTop』と殆ど同じです。
Androidでセルをスクロールさせる時にsetSelectionFromTop()使うんですが、UITableViewScrollPositionTopと違ってyピクセル下の位置になります。
図にするとこんな感じです。
分かりくいですが、黄色い四角が表示されてる部分として、
setSelectionFromTop(2, y)
と書くと図のようになります。
メソッドはすぐに見つかったんですが、int y が理解できずに悩みました。
ListViewから他の画面に飛んでまた戻ってきたときに、そこまででスクロールしていた位置に戻す処理で使うことが多い模様。
int position = listView.getFirstVisiblePosition();
int y = listView.getChildAt(0).getTop();
listView.setSelectionFromTop(position, y);
これでスクロールしていた位置に戻す処理ができます。
という感じの説明が多かったです。
ついでに全部調べてみました。
getFirstVisiblePosition()
これで表示テーブルの一番上のセルのポジションを取得できるそうです。
getChildAt()
対象のオブジェクトの子の要素が取得できるそうです。
getTop()
Y軸方向の位置(直接の親のViewからの相対位置)を取得できるそうです。