私は実験してきましたがPagedListAdapter
、アダプターの位置を正しく復元する方法がわかりません。
最後の試行はlastKey
、現在のリストから保存しようとしました。
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
val lastKey = adapter.currentList?.lastKey as Int
outState.putInt("lastKey", lastKey)
}
しかし、アダプターを復元して、最後に見たものと表示されているものに渡すlastKey
とPagedListBuilder
、かなり異なります。
val dataSourceFactory = dao.reportsDataSourceFactory()
val builder = RxPagedListBuilder(
dataSourceFactory,
PagedList.Config.Builder()
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(60)
.setPageSize(20)
.setPrefetchDistance(60)
.build()
)
.setInitialLoadKey(initialLoadKey)
.setBoundaryCallback(boundaryCallback)
再開時にページ #4 の途中にいる場合、アダプターはページ #4 の先頭の位置になります。理想的には、アダプターは最後に見たときとまったく同じ位置に復元する必要があります。
LayoutManager の状態を保存するためのさまざまな試み
outState.putParcelable("layout_manager_state", recycler_view.layoutManager.onSaveInstanceState())
そして、それを復元します
recycler_view.layoutManager.onRestoreInstanceState(it.getParcelable("layout_manager_state"))
見事に失敗。どんな提案も大歓迎です:)