Как сделать так, чтобы PagedListAdapter в архитектуре выдержал изменения конфигурации?
Новый Android PagedListAdapter - отличная библиотека для обработки подкачки в списке данных. Это хорошо работает для меня, только то, как сделать так, чтобы оно выдерживало изменения конфигурации (например, поворот экрана), как это делает ViewModel в Android Architecture?
1 ответ
Решение
Адаптер зависит от контекста активности, поэтому он не переживет изменения конфигурации. Вместо этого список будет настроен ViewModel, который выживает при изменениях конфигурации и соответственно обновляет пользовательский интерфейс. У вас должно быть что-то вроде следующего. В вашей деятельности 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