data-binding-validator

介绍:

一个基于Data Binding的表单验证。

运行效果:

使用说明:

Step 1: 在项目的根build.gradle文件中添加:

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Step 2: 添加依赖

  dependencies {
    compile 'com.github.Ilhasoft:data-binding-validator:LATEST-VERSION'
  }

启用 Data Binding

要使用Data Binding你需要先启用它,在 main module 的 build.gradle 文件中添加以下代码:

android {
    ....
    dataBinding {
        enabled = true
    }
}

直接在布局中设置验证

可以直接在布局上插入验证。不同语言的错误信息都已经在library中配置好了,无需由开发者添加。以下是现有的验证类型:

验证字符长度

为EditText添加 validateMinLength 或者 validateMaxLength,可以配置最小和最大的字符长度:

<EditText
  android:id="@+id/name"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateMinLength="@{4}"
  app:validateMaxLength="@{10}"/>

验证是否为空

使用validateEmpty验证EditText是否为空:

<EditText
  android:id="@+id/hello"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateEmpty="@{true}" />

验证日期格式

使用validateDate验证日期格式,你可以设置类似dd/MM/yyyy, yyyy这样的格式来对日期进行验证:

<EditText
  android:id="@+id/date"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateDate='@{"dd/MM/yyyy"}' />

正则验证

使用validateRegex进行正则验证:

<EditText
  android:id="@+id/regex"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateRegex='@{"\[a-zA-Z0-9-._\]+"}'
  app:validateRegexMessage="@{@string/regexErrorMessage}" />

验证输入类型

你甚至可以使用validateType直接验证Email, URL, Username, CreditCard, CPF, CEP等:

<EditText app:validateType='@{"email"}' />
<EditText app:validateType='@{"url"}' />
<EditText app:validateType='@{"creditCard"}' />
<EditText app:validateType='@{"username"}' />
<EditText app:validateType='@{"cpf"}' />

应用验证

需要传入你的ViewDataBinding实例来实例化Validator,然后调用validate()判断是否通过验证:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
  final Validator validator = new Validator(binding);
  binding.validate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      if (validator.validate()) {
        saveToDatabase();
      }
    }
  });
}

自定义错误提示

你可以添加自定义的错误提示,方法是在validation名字的后面再加上Message,比如s validateTypeMessage, validateDateMessage, validateRegexMessage:

<EditText
  android:id="@+id/date"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateDate='@{"dd/MM/yyyy"}'
  app:validateDateMessage="@{@string/dateErrorMessage}" />

验证模式

验证可以采用两种方式,一个一个的验证或者是整个表单一起验证。默认是一个一个的,但是你可以调用validator.enableFormValidationMode();来进行整表验证:

如果想回到默认的方式,调用validator.enableFieldValidationMode();

Auto dismiss

默认当你再次输入的时候错误提示会消失,但是这也是可以配置的,再验证规则的后面+AutoDismiss来设置,比如:

<EditText
  android:id="@+id/date"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:hint="Name"
  app:validateDate='@{"dd/MM/yyyy"}'
  app:validateDateMessage="@{@string/dateErrorMessage}"
  app:validateDateAutoDismiss="@{false}" />
已下载
0