ブログ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からの相対位置)を取得できるそうです。

PAGE TOP