Posted at

RecyclerViewでスクロール位置を復元する

RecyclerViewでスクロール位置を復元したい場合、だいたい position を保持しておいて、それを使って復元するのが王道な感じですが、別の方法もあるようだったのでメモがてら投稿。

// 保持

val state: Parcelable = recyclerView.layoutManager?.onSaveInstanceState()

// 復元
recyclerView.layoutManager?.onRestoreInstanceState(state)

LayoutManageronSaveInstanceState を呼ぶことで、スクロール位置などの情報を持った Parcelable を取得できるので、それを使う方法です。

onSaveInstanceState の場合、オフセットなども良しなに?計算してくれているようなので、 position を保持する方法よりも、いいかもしれないです。