Callback во фрагмент

121
27 мая 2021, 03:30

Есть активити A, фрагменты B и C.

Во фрагменте B список событий. А во фрагменте C добавление новых записей (создание на сервере).

Запускаем активити и при старте видим фрагмент В. При нажатии кнопки в тулбаре переходим в фрагмент C и создаём запись и нажимаем кнопку назад и по стеклу возвращаемся в фрагмент В.

Теперь необходимо правильно сделать механизм обновления данных в recyclerview. Т.е. если в фрагменте С мы что-то добавили мы при возврате во фрагмент B должны тянуть данные с сервера, а если мы просто открыли и закрыли фрагмент С то нечего при возврате на В не должно происходить.

Реализовано паттерном MVP. Используется Moxy с его ViewState'ами. Использую репозитории внутри презентера.

Answer 1

Есть масса способов реализовать данный вопрос. Если вы используете Room то правильней всего подписаться на обновления в базе фрагментом B. Во фрагменте С вы добавляете запись в базу, а фрагмент B узнаете об этом от Room'a. Если не юзаете Room можете во фрагменте B в onResume - каждый раз дергать последний актуальные данные из репозитория (можно сравнивать списки что бы не перерисовывать их постоянно) - но это такое себе решение. Можно еще использовать архитектурные компоненты и работать с LiveData - почитайте про данные компоненты.

READ ALSO
добавление элементов в коллекцию типа “класс”

добавление элементов в коллекцию типа “класс”

День добрыйРеализовываю добавление элементов в коллекцию, есть такой код:

106
Как в JOGL отрисовывать данные из массива вершин, а не из буфера в GPU?

Как в JOGL отрисовывать данные из массива вершин, а не из буфера в GPU?

В java-приложении с использованием JOGL рисую например треугольник (сильно сокращенный код):

132
JS, Select и Массивы

JS, Select и Массивы

Нужна ваша помощьЕсть в html'е select с четырьмя пунктами, кнопка и параграф, есть в коде 4 массива

138
Скачивание файлов в js

Скачивание файлов в js

Подскажите как написать скрипт для Tampermonkey, чтобы он при открытии новой вкладки в Firefox (например какой-либо картинки на сайте https://wallpaperscraftru)...

91