Есть ли способ для моей модели представления слушать события из представления при использовании шаблона mvvm, указанного компонентом архитектуры Android? - PullRequest
0 голосов
/ 22 апреля 2019

Я начинаю использовать шаблон mvvm для структурирования моего приложения для Android , и я хочу сохранить его шаблон, позволяя представлению наблюдать данные из viewmodel но в тех случаях, когда необходимо наблюдать данные только при необходимости или один раз (например, переход к новой компоновке), я испытываю трудности при реализации этого случая. Пожалуйста, возможно ли это? и как именно это можно сделать с помощью кода ( kotlin )?.

1 Ответ

0 голосов
/ 22 апреля 2019

Я думаю, что это плохое решение, потому что ваша ViewModel не должна ничего знать о View, и все из ViewModel должно 'push' для просмотра через DataBinding или Observer-Pattern.

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

source

Даже если вы решили сделать такие вещи, вы должны понимать, что это может бытьтрудно управлять подписками, когда представление разрушено.

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

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

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