如何使Architecture的PagedListAdapter能够在配置更改后幸存下来?

时间:2017-11-10 08:19:08

标签: android android-architecture-components android-livedata android-architecture android-paging

Android的新PagedListAdapter是一个很棒的库,用于处理数据列表上的分页。它对我来说效果很好,只是你如何让它在配置上发生变化(例如屏幕旋转),就像Android架构的ViewModel一样?

1 个答案:

答案 0 :(得分:0)

适配器依赖于活动上下文,因此它不会在配置更改后继续存在。相反,该列表将由ViewModel配置,ViewModel可以保存配置更改并相应地更新UI。你应该有类似以下的东西。在您的活动中onCreate

val adapter = CheeseAdapter()
cheeseList.adapter = adapter
// Subscribe the adapter to the ViewModel, so the items in the adapter are refreshed
// when the list changes
viewModel.allCheeses.observe(this, Observer(adapter::setList))

viewModel

val allCheeses = dao.allCheesesByName().create(0,
        PagedList.Config.Builder()
                .setPageSize(PAGE_SIZE)
                .setEnablePlaceholders(ENABLE_PLACEHOLDERS)
                .build())!!

我建议你看一下这个google sample