Задать вопрос
OMGcoder
@OMGcoder
Начинающий java программист

Почему не правильно работает DiffUtils?

Реализована пагинация по примеру:
https://m.habr.com/ru/post/431212/comments/

После загрузки первой порции даных переносит к последнему айтему в ресайкле.
После такого "переноса" так как это конец ресайкла сразу же подгружаеться вторая порция но после второй порции таких "переносов" нету.

Пример моего адаптера и адаптера с примера:
https://pastebin.com/wByWJY2t

Если запустить код с примера то ведёт себя при первом запуске вот так:
5fad2828ded5c145744084.png

Всё корректно и никаких скролов к низу после первой порции данных нету.

Если запустить мой код топ при первом запуске получим вот такой результат:
5fad288a25f9d825221989.png

Как видим сначала идёт почему-то последовательность в обратном порядке.
Так как нулевой елемент будет в самом низу то и положение ресайкла тоже внизу...

Делал всякие дурные манипуляции с DiffUtils и это влеяло на поведение ресайкла.
Но мне не удалось добиться правильной работы приложения...

Кратко как это работает:

1. При первом запуске приложения создаёться репозиторий.
2. Активность запускает всю канетесь с пагинацией.
3. Репозиторий должен дать данные.
3.1. Он смотрит в локальную БД - там пусто
3.2. Шлёт запрос на сервер и получает данные
3.3. Записывает данные в локальную БД
3.4. Данные с БД идут в List пагинации и отображаються на екране.

Далее при втором запуске ситуация схожа:
1. При запуске приложения создаёться репозиторий.
2. Активность запускает всю канетесь с пагинацией.
3. Репозиторий должен дать данные.
3.1. Он смотрит в локальную БД - там есть данные
3.2. Данные с БД пагинируються и идут в List пагинации и отображаються на екране по мере скроллинга.
3.3. Когда данные в БД кончатся - запрос на сервер за новой порцией
3.4. Записывает полученные данные в локальную БД
3.5. Данные с БД идут в List пагинации и отображаються на екране.

и так далее.

Помогите советом. Как побороть сей недуг.
Не могу найти принципиальных отличий между кодом с примера и моим..
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
OMGcoder
@OMGcoder Автор вопроса
Начинающий java программист
Решение оказалось довольно глупым.
Diffutils работал корректно.
Прочитав тонну литературы пришёл к этому:

5fad7cfeba441681377879.png

Помогло это:
https://issuetracker.google.com/issues/123834703
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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