我一直在尝试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"))
惨败。欢迎任何建议:)