screen_model.md
May 26, 2020 · View on GitHub
ScreenModel
Для хранения состояния экрана используются модели экрана - ScreenModel. Они переживают смену ориентации.
Модель при отрисовке должна полностью переводить вью в необходимое состояние, любой другой механизм для изменения состояния вью использовать запрещено. Разовое отображение SnackBar и другие разовые действия не относятся к состоянию.
Предусмотрены базовые классы ScreenModel,
поддерживающие различные состояния, например LoadState (состояние плейсхолдера).
Работают в связке с соответствующим базовым классом Вью.
Если какое либо конкретная часть состояния вью выводится из данных ScreenModel,
то метод вывода этого состояния должен быть в ScreenModel,
например: ScreenModel содержит модель корзины, которая в свою очередь
содержит информацию об акциях.
Если в зависимости от наличия акций необходимо показывать на UI блок с акциями,
то ScreenModel должна содержать метод boolean shouldRenderActions(),
в котором будет проверка акций.
Или если другими словами, оставляем во вью как можно меньше логики, чтобы потом можно было протестировать ее Unit тестами.
Основные классы:
ScreenModel- базовая модель экранаLdsScreenModel- модель экрана с поддержкой состояния загрузкиLdsSwrScreenModel- поддерживает pull-to-refresh(ПТР)LdsPgnScreenModel- поддерживает состояние пагинацииLdsSwrPgnScreenModel- поддерживает и ПТР и пагинацию
Состояния:
Для использования на конкретном экране необходимо наследоваться от одного из этих классов, учитывая их специфику.