Библиотека подкачки и комната с разными 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 с некоторыми условиями, которые представляют разницу между вашими запросами к серверу, если модель результата такая же в этих запросах.

Другие вопросы по тегам