Проверка электронной почты с привязкой данных - PullRequest
1 голос
/ 25 сентября 2019

Я пытаюсь выполнить проверку электронной почты, используя привязку данных

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 и сохранить ее там в переменной, затем, когда я нажимаю кнопку, я проверяю эту переменную и показываю сообщение об ошибке.

Есть предложения?

...