Библиотека подкачки и комната с разными PagedLists, которые зависят от разных запросов
Я пытаюсь настроить все свои списки, используя новые компоненты архитектуры Android: библиотеку устойчивости комнат и библиотеку подкачки. Но я сталкиваюсь со следующей проблемой. Представьте себе приложение, в котором есть множество списков различий одной и той же модели. Каждый список имеет свой собственный URL-запрос к серверу. Некоторые элементы могут повторяться в разных ответах. Поэтому я думаю, что мне нужно вставить и обновить все элементы каждого ответа в таблицу этой модели. Кроме того, у каждого запроса есть страницы. Например, elements/famous/0
, elements/famous/1
, Таким образом, когда ответ страницы 1 получен, список, содержащий элементы списка 0, должен добавить элементы, возвращаемые страницей 1.
Запрос Room, который возвращает LivePagedListProvided, выглядит следующим образом:
@Query("SELECT * FROM elements")
fun getElements(): LivePagedListProvider<Int, Model>
Когда какой-либо элемент запроса изменяется или элемент, добавленный в базу данных, влияет на запрос, LivePagedListProvider
наблюдаемые обеспечивают изменение, поэтому пользовательский интерфейс изменяется автоматически.
Вопрос в том, как сохранить и извлечь элементы, которые могут содержаться в разных списках, в зависимости от разных запросов с использованием библиотеки подкачки.
1 ответ
Если вы используете только одну таблицу для локального хранения полученных вами данных (из разных запросов к серверу), то после каждого обновления этой таблицы все ваши источники данных будут аннулированы, поэтому мы видим автообновление. Для разных запросов можно использовать разные таблицы, но это нехорошо) Думаю, можно написать select query
с некоторыми условиями, которые представляют разницу между вашими запросами к серверу, если модель результата такая же в этих запросах.