带有数据绑定的电子邮件验证

时间:2019-09-25 14:15:54

标签: android validation kotlin mvvm data-binding

我正在尝试使用数据绑定执行电子邮件验证

viewModel

<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()}"
/>

XML

@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()

email是自定义扩展功能。

我使用此代码在文本输入字段上显示了错误,但是视图模型不知道该错误,这就是我的问题!

代码和问题摘要

我将电子邮件存储在ViewModel变量( from("activemq:queue:outputQueue").inputType(HelloWorld.class) .to("log:stream") .marshal().json(JsonLibrary.Jackson, HelloWorld.class) .to("http:localhost:5000/messageForYouSir?bridgeEndpoint=true"); )中,然后使用数据绑定适配器检查输入,然后在textinput字段上显示错误消息, 我还通过XML将按钮链接到了ViewModel注册功能。

因此,现在我需要一种方法来将错误从数据绑定适配器返回到ViewModel并将其存储在变量中,然后单击按钮时检查var并显示错误消息。

有什么建议吗?

0 个答案:

没有答案