0

我想使用 Data Binding 和 BindingAdater 通过按钮单击验证表单

单击时将验证电子邮件。但我不知道 BindingAdapter 按钮如何

并返回 TextInputLayout 错误

布局

 <data>
    <variable
        name="loginViewModel"
        type="LoginViewModel" />
 </data>

 <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/layout_login_email"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_email="@{loginViewModel.emailText}"
    app:errorEnabled="true">

       <com.google.android.material.textfield.TextInputEditText
          android:id="@+id/edt_login_email"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:inputType="textEmailAddress"
          android:text="@={loginViewModel.emailText}" />

 </com.google.android.material.textfield.TextInputLayout>

 <Button
   android:id="@+id/btn_login"
   android:layout_width="match_parent"
   android:layout_height="60dp"
   android:text="@string/form_login"
   android:onClick="?????"
   android:textSize="@dimen/text_default" />

登录视图模型

val emailText = MutableLiveData<String>()

登录绑定适配器

@BindingAdapter("layout_email")
fun layout_email(view: TextInputLayout, email: String?) {

   if (email.isEmpty) {
      view.error = "Not Null"
   } else {
      when {
         email.leght <6 -> view.error = "your email < 6"

         else -> view.error = null
      }
   }

}
4

0 回答 0