Я пытаюсь выполнить проверку электронной почты, используя привязку данных
viewModel
val email= MutableLiveData<String>()
fun signup(){
}
XML
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputEmail"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:textInputCheck="@{viewModel.email}"
>
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="E-Mail"
android:inputType="textEmailAddress"
android:text="@={viewModel.email}" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/signup"
android:onClick="@{()->viewModel.signup()}"
/>
Связующий адаптер
@BindingAdapter("textInputCheck")
fun textInputCheck(textInputLayout: TextInputLayout, email: String?) {
Log.i("BindingAdapter", "${email}")
if (email == null) {
return
}
if (!email.validateEmail()) {
textInputLayout.error = "Email format is not correct"
return
}
textInputLayout.error = ""
}
validateEmail()
- это пользовательская функция расширения.
Мне удалось с помощью этого кода показать ошибку в поле ввода текста, но модель представления не знает об этой ошибке, и это моя проблема!
РЕЗЮМЕ КОДА И ПРОБЛЕМЫ
Я сохраняю электронную почту в переменной ViewModel (email
), затем проверяет ввод с помощью адаптера привязки данных, затем показывает сообщение об ошибке в поле ввода текста, I 'Мы также связали кнопку с функцией регистрации ViewModel через XML.
Так что теперь мне нужен способ вернуть эту ошибку из адаптера привязки данных в ViewModel и сохранить ее там в переменной, затем, когда я нажимаю кнопку, я проверяю эту переменную и показываю сообщение об ошибке.
Есть предложения?