我正在尝试使用数据绑定执行电子邮件验证
<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()
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并显示错误消息。
有什么建议吗?