Size: a a a

Android arch. components

2019 March 22

NB

Nikita Bulygin in Android arch. components
Помоему должно быть так
источник

NB

Nikita Bulygin in Android arch. components
Вот создавать DataSource c PagedList должен Factory, который рум может создать из коробки.
источник

NB

Nikita Bulygin in Android arch. components
У меня это выглядит вот так
@Query("SELECT * from HistoryItemUI ORDER BY date DESC")
   public abstract DataSource.Factory<Integer, HistoryItemUI> getHistoryDESC();
источник

AP

Anton Potekhin in Android arch. components
Nikita Bulygin
Видимо вам нужно после вызова Invalidate создать новый DataSource с новым PagedList. Создатее  новый pagelist с новым DataSource и скармливаете его адаптеру. Адаптер вызывает DiffUtil  для новых данных, выясняет что тот итем который вы изменили, изменился и обновляет его в RecyclerView
Ну datasourcefactory и так создает новый датасурс после инвалидейт и соотвественно новый PagedList. Но loadInit запрос асинхронный и соотвественно сперва придетает новый PagedList а потому уже прилетают данные
источник

AP

Anton Potekhin in Android arch. components
Nikita Bulygin
Вот создавать DataSource c PagedList должен Factory, который рум может создать из коробки.
мне не подходит этот датасурс. Он берет ваш запрос и добавляет к нем limit и оффсет. А значит если вам нужно загрузить список например с 50-ого элемента он это не сделает правильно.
источник

AP

Anton Potekhin in Android arch. components
короче данный датасурс подходит только в том случае если у вас данный в базу попадают строго с начала и до конца последовательно
источник

NB

Nikita Bulygin in Android arch. components
Я запутался. Елси еще актуально го сначала. Проблема у вас в чем ?
источник

AP

Anton Potekhin in Android arch. components
Nikita Bulygin
Я запутался. Елси еще актуально го сначала. Проблема у вас в чем ?
проблема в том что я упорно не пойму как обновить или  один элемент в pagedadapter. Если я дергаю инвалидейт у своего кастомного датасурс то он пересоздается и выкидывает новую pagedlist пустой и из-за этого не срабатывает diffutill callback и соотвественно тупо перезагружается весь список
источник

NB

Nikita Bulygin in Android arch. components
Проблема понятна. А откуда ваш кастомный датасорс берет данные?
источник

NB

Nikita Bulygin in Android arch. components
Напрямую из сети ?
источник

AP

Anton Potekhin in Android arch. components
Nikita Bulygin
Проблема понятна. А откуда ваш кастомный датасорс берет данные?
из базы. Если нет в базе то из сети и кэширует в базу
источник

AP

Anton Potekhin in Android arch. components
есть догадка. Сейчас смотрю код даасурса который room гененрирует. Там запрос loadInitial не асинхронный...
источник

AP

Anton Potekhin in Android arch. components
сейчас попробую у себя сделать не асинхронно
источник

ST

Sasha Tainyuk in Android arch. components
Anton Potekhin
Так вот я смотрю сперва прилетает PagedList пустой. И потом дергается DataSource для получения данных, который возвращает первую порцию данных
Это нормальное поведение.
источник

AP

Anton Potekhin in Android arch. components
Sasha Tainyuk
Это нормальное поведение.
Так по этому он пустой и прилетает. А если он пустой до дифф и не работает.
источник

ST

Sasha Tainyuk in Android arch. components
Anton Potekhin
Так по этому он пустой и прилетает. А если он пустой до дифф и не работает.
Ну я на null чекаю и ок. Вроде работает
источник

AP

Anton Potekhin in Android arch. components
Sasha Tainyuk
Ну я на null чекаю и ок. Вроде работает
где ?
источник

ST

Sasha Tainyuk in Android arch. components
Перед submit в адаптер
источник

AP

Anton Potekhin in Android arch. components
Sasha Tainyuk
Перед submit в адаптер
не понял. Кого на null ?
источник

ST

Sasha Tainyuk in Android arch. components
Anton Potekhin
не понял. Кого на null ?
Ну из лайфдаты перед submit делаю data ?: return@Observer.
источник