Android ViewModel для модели событий - PullRequest
1 голос
/ 31 марта 2020

Я работаю над созданием нового приложения Android с использованием компонентов архитектуры Google (ViewModel, LiveData) с использованием архитектуры MVVM.

Я почти уверен, что у меня уже есть большая часть потока. Я понимаю, как View использует LiveData для наблюдения ViewModel за изменениями, и как ViewModel может аналогичным образом наблюдать модель (в моем случае, одноэлементное хранилище) для изменений.

Поскольку я пытаюсь сохранить большую часть мои бизнес-логики c на уровне модели, я бы хотел, чтобы представление 'сообщало' о событиях до уровня модели, где моя бизнес-логика c может решить, следует ли обрабатывать события. В настоящее время моя бизнес-логика c может обновлять значения в репозитории, которые будут распространять изменения значений вплоть до представления, но это только однонаправленное.

Как я могу уведомить о событиях Model of View?

1 Ответ

2 голосов
/ 31 марта 2020

Представление не может сообщать напрямую модели. Это идет вразрез с чистой архитектурой и MVVM.

ViewModel действует как связующее звено между представлением и моделью. ViewModel может принимать входные данные из представления и помещать их в модель или взаимодействовать со службой для извлечения модели, а затем переводить свойства, и представление будет уведомлено об измененных данных через привязку или наблюдателей.

Если вы используете kotlin (и gradle 2.0 или выше), теперь вы можете использовать привязки слушателей для обработки событий, и это позволит вам напрямую выполнять методы из ViewModel, когда события запускаются через лямбда-выражения. Это тогда ViewModel, который должен быть тем, кто выполняет работу над моделью. Когда модель обновляется, ViewModel получает уведомление от наблюдателя, и View также отражает изменения с привязкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...