Android Библиотека подкачки 3 - обновить VH 1-й страницы со следующими загрузками - PullRequest
1 голос
/ 09 июля 2020

Можно ли с библиотекой Paging 3 обновить ViewHolder 1-й страницы при загрузке 2-й страницы вместо вставки новых элементов? Мои отображаемые данные сгруппированы по дате (вложенный RecyclerView), а вторая загрузка иногда может содержать элементы, датированные с ViewHolder 1-й страницы.

Пример

Сетевой запрос 1-й страницы:

Jan 1st 2020 - X Y Z

Jan 2nd 2020 - A B

Сетевой запрос 2-й страницы:

Jan 2nd 2020 - E F

Я бы хотел, чтобы мой основной RecyclerView содержал только 2 элемента после этих 2 сетевых запросов:

Jan 1st 2020 - X Y Z
Jan 2nd 2020 - A B E F

Разъяснение по поводу сетевого ответа

Мой API возвращает данные следующим образом:

X - Jan 1st 2020
Y - Jan 1st 2020
Z - Jan 1st 2020
A - Jan 2nd 2020
B - Jan 2nd 2020

Я пытался вставить свои данные в базу данных комнаты с отношением «один ко многим» между датами и элементами, но номер не поддерживает создание PagingSource связанных объектов типа "один ко многим" начиная с версии 2.3.0-alpha01.

Всем спасибо.

1 Ответ

0 голосов
/ 11 июля 2020

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

Ваша реализация PagingSource будет основана на локально кэшированных данных (здесь хорошим кандидатом будет комната ), и когда в локальном кеше заканчиваются данные, RemoteMediator может быть запущен для извлечения большего количества элементов, затем будет запрашивать существующие элементы из кеша, изменять их и вставлять новые элементы, а затем аннулировать PagingSource, чтобы он стал осведомлен о новых изменениях.

Аннулирование в настоящее время является единственным способом обновить существующие данные за пределами преобразований. Мы хотели бы добавить новые операторы, но пока у нас нет чего-то вроде fold / reduce / deduplicate, которое подходило бы к этому варианту использования.

...