Как контролировать в ViewModel, когда значение в пользовательском интерфейсе изменяется? (с привязкой к данным) - PullRequest
0 голосов
/ 01 июня 2019

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

В старые времена, до привязки данных с LD, у меня просто был метод в моей Деятельности, который выполняетдействие и ссылаться на него в макете, как это:

В макете:

<EditText
      android:onTextChanged="textChanged()"

Теперь я использую привязку данных с LiveData.У меня есть поле в моей виртуальной машине, на которое ссылается пользовательский интерфейс и которое использует двустороннюю привязку данных, поэтому поле обновляется автоматически.Но что, если я хочу сделать что-то большее, чем просто обновить значение поля?Могу ли я определить метод для запуска других действий, например, сохранить значение в базе данных?

В макете:

<EditText
      android:text="@={viewmodel.myField}"

В ViewModel:

val myField = MutableLiveData<String>()

* Примечание: я хочу, чтобы это было сделано в ВМ.Я знаю, что мог бы создать наблюдателя в Деятельности, наблюдающего за полем в ВМ, но это просто, если я хочу, чтобы какое-то изменение пользовательского интерфейса было сделано.Я хочу использовать некоторую бизнес-логику при изменении значения, а не пользовательский интерфейс.

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