#android #android-paging #android-paging-library #android-paging-3
Вопрос:
Мы разрабатываем приложение для чата. Если сообщения содержат изображения, и они приходят одно за другим, мы в адаптере группируем эти изображения в одно сообщение.
Вопрос 1
В базе данных и в остальной части API у нас есть эти сообщения отдельно, но в адаптере мы группируем их для отображения пользователю в виде одного большого сообщения с маленькими значками изображений внутри.
Мы хотим реализовать библиотеку подкачки, чтобы иметь возможность прокручивать любое сообщение в истории. В настоящее время мы используем a RemoteMediator<Int, Message>
, который делает запросы на наш сервер и получает сообщения. Для хранения этих сообщений мы используем Room
, который возвращает PagingSource<Int, Message>
. Для отображения сообщений мы используем PagingDataAdapter
Все работает хорошо, вопрос в том, как мы можем реализовать эту логику группировки изображений в подкачке 3? На каких шагах и когда мы можем внести это изменение и объединить сообщение в одно?
Пример:
Message1_Text1 - Message2_Image1 - Message3_Image2 - Message4_Text2
После группировки мы должны получить
Message1_Text1 - Message2_(Image1_Image2) - Message3_Text2
Вопрос 2
В зависимости от того, что это за сообщения before
, и after
мы показываем сообщения по-разному, например, мы показываем значок профиля только в первом сообщении, все остальные сообщения от того же пользователя отображаются без значка профиля.
Мы можем изменить наши данные, PagingData.map{}
но у нас нет никакой информации об элементах » до » и «после». Как этого можно достичь?
Комментарии:
1. Преобразования поверх данных по страницам позволяют выполнять итерацию только по одному элементу за раз, поэтому, если вы хотите агрегировать элементы, я бы попробовал многоуровневый подход, при котором RemoteMediator извлекает следующие элементы и обновляет кэш / БД в памяти, который выполняет агрегацию при вставке и предоставляет агрегированные элементы для подкачки.