RecyclerView.Adapter StateRestorationPolicy 如何运作?
How RecyclerView.Adapter StateRestorationPolicy works?
我在 activity 的 onCreate 方法中异步填充我的适配器。当 activity 重新配置时,它会破坏当前的 activity 并创建新的 activity 实例。因此,我以前的列表将丢失。我必须再次用新数据填充我的适配器。因此,当适配器恢复其状态时,我的列表可能尚未填充。我认为这就是为什么在发生 activity 重新配置时适配器总是会到达起始位置的原因。我可能用错了。有人帮我怎么做。这是我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
.
.
.
myAdapter = MyListAdapter(myList,...)
myAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
.
.
.
connectToDatabase(myList)
}
.
.
.
override fun onDistroy() {
.
.
.
disconnectFromDatabase()
}
我和你有同样的问题。虽然有些人可以让它发挥作用,但对我来说却不行。很多人说不靠谱。相反,我将适配器的数据缓存在 ViewModel
中,一切正常
我在 activity 的 onCreate 方法中异步填充我的适配器。当 activity 重新配置时,它会破坏当前的 activity 并创建新的 activity 实例。因此,我以前的列表将丢失。我必须再次用新数据填充我的适配器。因此,当适配器恢复其状态时,我的列表可能尚未填充。我认为这就是为什么在发生 activity 重新配置时适配器总是会到达起始位置的原因。我可能用错了。有人帮我怎么做。这是我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
.
.
.
myAdapter = MyListAdapter(myList,...)
myAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
.
.
.
connectToDatabase(myList)
}
.
.
.
override fun onDistroy() {
.
.
.
disconnectFromDatabase()
}
我和你有同样的问题。虽然有些人可以让它发挥作用,但对我来说却不行。很多人说不靠谱。相反,我将适配器的数据缓存在 ViewModel
中,一切正常