Android Paging Library - Обновление данных на текущей странице - PullRequest
0 голосов
/ 12 марта 2019

Я использую новую библиотеку подкачки Android Jetpack для отображения списка элементов, полученных из API.Я хочу, чтобы данные на текущей странице (скажем, на странице 3) обновлялись каждые несколько минут, не обновляя весь список с помощью функции invalidate (), так как это переводит представление Recycler на свою первую страницу.

Проблема, которую я вижу здесь, заключается в том, что библиотека подкачки предполагает, что данные являются неизменяемыми.

https://developer.android.com/reference/android/arch/paging/DataSource#updating-paged-data

При поиске в Google я могу увидеть обходной путь - использовать Room и displayпользовательский интерфейс на основе обновлений БД из вызова API.

Есть ли другие предложения для решения этой проблемы без использования локального магазина.

1 Ответ

0 голосов
/ 09 июня 2019

Единственный способ избавиться от этой проблемы - добавить слой постоянства с помощью Room.https://github.com/googlesamples/android-architecture-components/tree/master/PagingWithNetworkSample#paging-with-database-and-network

Согласно документам здесь: https://developer.android.com/reference/androidx/paging/DataSource#updating-paged-data

Если у вас есть более детальные сигналы обновления, такие как сетевой API, сигнализирующий об обновлении одного элемента в списке,рекомендуется загружать данные из сети в память.Затем представьте эти данные в PagedList через DataSource, который оборачивает снимок в памяти.Каждый раз, когда изменяется копия в памяти, аннулируется предыдущий источник данных, и может создаваться новый, содержащий новое состояние моментального снимка.

https://developer.android.com/topic/libraries/architecture/paging/data#consider-content-updates

Когда вы создаете наблюдаемые объекты PagedList, подумайте, как работают обновления контента.Если вы загружаете данные непосредственно из базы данных Room, обновления автоматически отправляются в пользовательский интерфейс вашего приложения.

...