MVP widget

May 26, 2020 · View on GitHub

Главная страница репозитория

MVP widget

Расширение модуля core-mvp для работы со view (в терминах android фреймвока) как со View(в терминах MVP).

Виджет(Widget) - это кастомная вью со своим Presenter. Для них справедливы все те правила, что и для обычных кастомных вью.

Плюс к этому виджеты могут выручить в ситуации, когда экран перегружен фрагментами. Они вполне могут их заменить и при этом виджеты "легче", чем фрагменты.

Отличная презентация на тему

Основные классы:

  1. CoreFrameLayoutView
  2. CoreLinearLayoutView
  3. CoreRelativeLayoutView
  4. CoreConstraintLayoutView

Конфигураторы:

Подключение

Gradle:

    implementation "ru.surfstudio.android:mvp-widget:X.X.X"

Использование

Для создания виджета необходимо сделать шаги, аналогичные созданию экрана:

  1. Наследоваться от одного из базовых виджетов
  2. Убедиться в уникальности идентификатора виджета:
    1. Если виджет используется внутри верстки, необходимо явно задать ему android:id в XML
    2. Если виджет добавляется динамически, необходимо либо явно задать id программно, либо переопределить метод getWidgetId
    3. При добавлении виджета в RecyclerView строго рекомендуется переопределить метод getWidgetId на основе уникальных данных, получаемых внутри метода ViewHolder.bind.
  3. Расширить базовый презентер
  4. Расширить BaseWidgetConfigurator
  5. Опционально: создать ScreenModel, и реализовать один из базовых интерфейсов