Как архитектурно организовать фильтр данных в android приложении?

Есть приложение, 2 экрана и один DialogFragment. Экран категорий, экран списка продуктов, и диалогфрагмент с фильтрами. На сервер отправляю объект фильтра с полями, имя и категория - тоже поля. Из категорий в список продуктов я могу перейти 2мя способами - нажать на категорию или нажать на поиск. В обоих случаях надо передать в экран списка продуктов объект фильтра, так как с этого экрана происходят запросы на сервер. На экране продуктов при нажатии на кнопу Фильтр открывается диалог с заполнением полей фильтров. Привожу подробнее все переходы на картинке. граф переходов При всех этих переходах мне надо как-то передавать объект фильтра. Вопрос - как мне лучше организовать работу с фильтрами с точки зрения архитектуры? Я думал над двумя вариантами:

  1. Постоянно кидаться объектом фильтра между фрагментами, внося необходимые изменения перед отправкой в другой фрагмент. Но может возникнуть проблема, что не так легко станет не терять изменения. Не слишком расширяемое решение.
  2. Завести статический объект с полями фильтра и из всех мест, где это нужно, в него писать. А в тех местах, где надо обновить список продуктов - брать инфу из этого объекта и кидать на серв. Но тогда может возникнуть проблема, что можно забыть сбрасывать ненужные изменения. Опять, не слишком расширяемое решение. Есть ли решение этой проблемы, корректное с точки зрения архитектуры, которое не требует много контроля за объектом фильтра?

Ответы (0 шт):