Итак, у меня есть RecyclerView
с бесконечной прокруткой. Сначала я выполняю сетевой вызов моего API и получаю первую страницу из 20 элементов.
В моем ViewModel
(код ниже) у меня есть наблюдаемая, которая запускает сетевой вызов в моем хранилище, используя номер страницы.
Таким образом, когда пользователь прокручивает страницу до конца, номер страницы увеличивается, и он запускает другой сетевой запрос.
Вот код в моем ViewModel
:
private val scheduleObservable = Transformations.switchMap(scheduleParams) { params: Map<String, Any> ->
ScheduleRepository.schedule(params["organizationId"] as String, params["page"] as Int)
}
// This is the method I call in my Fragment to fetch another page
fun fetchSchedule(organizationId: String, page: Int) {
val params = mapOf(
"organizationId" to organizationId,
"page" to page
)
scheduleParams.value = params
}
fun scheduleObservable() : LiveData<Resource<Items>> {
return scheduleObservable
}
В моем фрагменте я наблюдаю scheduleObservable, и когда он выдает данные, я добавляю их в адаптер моего RecyclerView:
viewModel.scheduleObservable().observe(this, Observer {
it?.data?.let {
if (!isAppending) {
adapter.replaceData(it)
} else {
adapter.addData(it)
}
}
})
Проблема с моей текущей реализацией заключается в том, что при изменении конфигурации я перепривязываю своего наблюдателя, и наблюдаемое излучает последние извлеченные данные. В моем случае он будет выдавать только последнюю извлеченную страницу.
При возвращении после изменения конфигурации я хотел бы получить полный список элементов, выбранных к этому моменту, чтобы я мог заново заполнить адаптер этими.
Мне интересно, как лучше это решить. Должен ли я иметь две наблюдаемые? Должен ли я создать переменную списка в моем ViewModel для хранения всех выбранных элементов и использовать этот список для моего адаптера?
Я проверил компоненты android-Architecture-GitHub, но обычно это излишнее сравнение с моими потребностями (нет базы данных, нет библиотеки подкачки и т. Д.), И я заблудился, поскольку все еще пытаюсь обернуть голову вокруг компонентов архитектуры.