169 похожих чатов

Господа вопрос я получаю API response как объект Response, в

котором внутри есть List<Object>, потом в PagingSourse этот лист превращается в PagingData<Object> и таким приходит в Repository и дальше в ресайкл. Но в Repository мне надо кешировать в базу эти данные, причем в формате List<Object>. Подскажите я вообще как-то могу преобразовать PagingData<Object> в List<Object>, или мне надо сначала кешировать приходящий List, а потом преобразовывать в PagingData для отображения? (и кеширование и Paging для мнея абсолютно новые темы)

8 ответов

4 просмотра

По-моему последний вариант, который вы сами предложили более правильный - сервис, который принимает респонсе может быть использован и в других местах приложения - поэтому пусть он отдает в формате List<Object> - и уже любой репозиторий сможет его преобразовывать в тот вид, который нужен именно там.

здесь remoteMediator нужен, pagingSource только для чего-то одного - сеть или база

если речь конечно про paging 3, про другие не шарю

Lessej- Автор вопроса

ну у меня сейчас в классе PagingSource происходит обращение к API и превращается все в PagingData, то есть мне надо обращаться к API из самого репозитория? (и кешировать данные, а потом отдельно какауюто функцию чтобы преобразовыавть Лист в PagingData)

Не надо обращаться к API из репозитория (ну формально из него все равно будет идти запрос, базару нет). Надо в Pager() при создании передавать не текущий pagingSource что вы сделали, а реализацию remoteMediator - класс специально предназначенный для работы как с сетью, так и с базой одновременно. В нем,в методе load загрузите свои объекты List<Object>, положите их в базу, а снаружи будет торчать флоу PagingData<Object>, через него уже в UI

https://developer.android.com/codelabs/android-paging#12 vot guide

Lessej- Автор вопроса

спасибо. Смотрю эту лабу , мне кажется это получается вообще самый адекватный способ строить приложения с MVVM в оторых есть и room база и обращение к сети, да?

Такой способ стандарт де-факто от гугла. Он удобен и активно поддерживается гуглом, много бойлерплейт кода за счёт jetpack либ уходит. Но есть и другие адекватные варианты, не только mvvm, тут уж дело вкуса

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Святости? Когда дотумкаешь что открытое лучше закрытого - кастани
zamtmn
9
я имею в виду официально интегрированный в телегу? в том плане что не сливает переписку с пользователем?
Andrey
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
19
Кто-нибудь решал проблему с автоматическим скроллингом к выбранной ячейке в TDBGrid в Lazarus? Проблема в том, что есть допустим 3 столбца, третий столбец виден наполовину, вк...
Дмитрий Логинов
1
Приветствуем всех! Устали без проектов? Если вы программист и хотите получать стабильные заказы, компания Elif предлагает вам недельный курс по поиску проектов и их ведению. ...
Elif
1
ты вот так хотел? а пурджить arg бесполезно это не макрос, вот рестроить arg смысл есть, но в конце области видимости, а не перед началом новой области видимости.
ProMiNick
7
Карта сайта