Вот практика ставок для достижения этого (с моей точки зрения):
В вашем макете добавьте наблюдателя текста и текст к вашему EditText
android:text="@{view_model.phone}"
app:addTextChangedListener="@{view_model.phoneWatcher}"
и нажмитеметод для вашей кнопки
android:onClick="@{() -> view_model.save()}"
Внутри ViewModel
у вас будет наблюдаемый текст и наблюдатель
val phone = ObservableField<String?>()
val phoneWatcher = object : TextWatcherAdapter() {
override fun afterTextChanged(s: Editable?) {
phone.set(s?.toString())
}
}
Теперь вы можете сделать свой чек внутри ViewModel
fun save() {
if (phone.get()?.isNotEmpty == true) {
// TODO: do something
}
}
Также обратите внимание, что лучше не делать что-то подобное binding!!.phone
в Котлине.Если вы используете !!
, чтобы сделать возможный обнуляемый объект похожим на ненулевой (даже если вы уверены на 100%) - вы делаете что-то не так.