Skip to content

Repository files navigation

Android校验库 - Android Validation

简单易用的Android校验库。

这是一个简单Android校验库,按配置来验证用户输入的表单信息。 只需要几行代码,即可验证用户输入,并且将验证错误反馈给用户。 它内置了大量常用的验证类型,足以满足你的功能需求。 它还有一个可扩展的验证选项,你可以通过扩展接口添加你需要的验证方式。

截图

Gradle 依赖

Add repository

 allprojects {
repositories {
// !!!! ADD THIS !!!!
maven{ url 'http://oss.sonatype.org/content/groups/public/' }
}
}

Add dependency

 dependencies {
compile 'com.github.chenyoca:android-validation:2.0-SNAPSHOT'
}

已内置支持的校验方式

  • Required (必填)
  • NotBlank (非空数据)
  • Digits (仅数字)
  • Email (电子邮件)
  • EqualTo (与指定值相同)
  • Host (主机地址)
  • URL (Http URL)
  • IPv4 (IPv4地址)
  • LengthInRange (指定长度范围)
  • MinLength (最小长度)
  • MaxLength (最大长度)
  • Numeric (数值)
  • CreditCard (信用卡号)
  • ValueInRange (最值范围)
  • MinValue (最小值)
  • MaxValue (最大值)
  • ChineseMobilePhone (中国的手机号码)

如何使用?

方式 1:对单个EditText进行校验

1. 构建校验配置

// 通过build, add, custom接口来添加校验规则,// Apply 用于每次添加校验规则,在 add() 方法中,会自动将保存前一条配置,// 但在最后一条规则配置后,记得调用 apply() 确认规则配置完成。finalConfigconf = Config.build(Types.Required).message("必填选项").apply();
conf.add(Types.LengthInMax).values(20).apply();
conf.add(Types.Email).apply();

!!!! 最后添加的规则一定要调用 apply() !!!!

2. 对EditText执行校验

EditTextedittext = (EditText) findViewById(R.id.single_test);
ResultWrapperresult = FormValidator.testField(edittext, conf);

方式 2:对整个Layout内的EditText全部校验

通过 View ID 来绑定校验配置信息

1. 对表单内各个EditText绑定其校验配置

finalFormValidatorfv = newFormValidator();
// FormValidator.addField(*Config instance*, *view id for EditText*)finalConfigconf = Config.build(Types.Required).message("必填选项").apply();
conf.add(Types.LengthInMax).values(20).apply();
conf.add(Types.Email).apply();
finalEditTexttest = (EditText) findViewById(R.id.single_test);
finalButtonapply = (Button) findViewById(R.id.single_apply);
apply.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
ResultWrapperrw = AndroidValidator.testField(test, conf, testDisplay);
intcolor = rw.passed ?
android.R.color.holo_green_dark : android.R.color.holo_red_dark;
apply.setTextColor(getResources().getColor(color));
}
});
finalLinearLayoutform = (LinearLayout) findViewById(R.id.form);
finalAndroidValidatorav = newAndroidValidator(testDisplay);
av.putField(R.id.form_field_1, Types.ChineseMobilePhone, Types.Required);
av.putField(R.id.form_field_2, Types.CreditCard);
av.putField(R.id.form_field_3, Types.Digits);
av.putField(R.id.form_field_4, Types.Email);
av.putField(R.id.form_field_5, Config.build(Types.EqualTo).loader(newEditTextLazyLoader(test)).apply());
av.putField(R.id.form_field_6, Types.Host);
av.putField(R.id.form_field_7, Types.HTTPURL);
av.putField(R.id.form_field_8, Types.LengthInMax);
av.putField(R.id.form_field_9, Types.LengthInMin);
av.putField(R.id.form_field_10, Types.LengthInRange);
av.putField(R.id.form_field_11, Types.NotBlank);
av.putField(R.id.form_field_12, Types.Numeric);
av.putField(R.id.form_field_13, Config.build(Types.ValueInMax).values(100).apply());
av.putField(R.id.form_field_14, Config.build(Types.ValueInMin).values(20).apply());
av.putField(R.id.form_field_15, Config.build(Types.ValueInRange).values(18, 30).apply());

2. 对表单执行校验配置

2.1 粗鲁的校验 - 直接拿校验结果
finalLinearLayoutform = (LinearLayout) findViewById(R.id.form);
// 1. 中断校验:按Layout的ChildView顺序校验,遇到校验失败则中断。booleanpassed = fv.testForm(form)
// 1. 连续校验:按Layout的ChildView顺序校验,遇到校验失败继续,不中断。booleanpassed = fv.testFormAll(form)
2.2 文明的校验
// 先绑定校验表单fv.bind(form)
.applyTypeToView(); // 将校验规则应用到EditText中,使得输入法根据校验配置,显示不同的布局。fv.test();
// Or fv.testAll();

如何扩展?

通过 Config的扩展接口,添加你自定义的校验实现类

// 添加到已创建的Config中:conf.add(newTestRunner("出错时,此消息被返回并显示到EditText中") {
@Overridepublicbooleantest(CharSequenceinputValue) {
// 校验通过时返回 truereturninputValue.equal("AABB");
}
});

注意

校验顺序

校验顺序按Config添加配置的顺序进行校验。

如果添加 Required 校验类型,则 Required 无论在哪个顺序被添加,都会被首先校验。

Required校验类型对其它类型的影响:

当EditText为空值时,如果添加Required校验规则,则校验失败;如果没有,则校验通过并跳过后面的校验类型。

其它扩展接口

将校验条件应用到EditText中

如“最大长度”、“邮件地址”等校验条件,可以将EditText的输入类型自动切换至相应类型。

获取EditText的值

Stringusername = validator.getValue(R.id.form_field_1);

About

易用的 Android 输入校验库 - An validation library for android

Resources

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors