摘要:必须是一个在之后的日期。只能由字母组成。欢迎给我提意见当前版本还处理测试阶段,暂不建议应用于真实项目中,如果你有更好的想法,或者希望加入其他功能欢迎给我提。
专注于 Android 表单验证,用方法链构建你的验证规则。
野生程序员一枚,喜欢重复发明轮子,~
立即关注 JianyingLi
项目托管在GitHub,欢迎Star!
https://github.com/lijy91/blankapp-validation
为什么重复造轮子Android表单验证的库已经不少,例如通过注解方法的 android-saripaar,直接自定义控件的 android-edittext-validator 等等,然而这几种方式我都觉得过于麻烦,都不是我的菜!
而且刚好最近在用 Laravel 做一个项目,被它提供的表单验证功能迷倒了,相当的简单、直观,构建验证规则也非常的方便,所以才萌生了自己写这个库的想法,通过链式调用构建我们的表单验证规则。
示例
$rules = [ "username" => "required|between:4,32|alpha_dash|unique:users", "email" => "required|email|unique:users", "password" => "required|between:6,32", ]; $this->validate($request, $rules);支持验证的控件
支持以下控件或派生自以下的控件
EditText
CompoundButton
如何使用 添加依赖1、只需将 mvn-repo 地址添加到您的项目根目录 build.gradle 文件:
repositories { maven { url "https://raw.githubusercontent.com/lijy91/mvn-repo/master/" } jcenter() }
2、在要集成的模块 build.gradle 文件中添加依赖,如下:
dependencies { compile "org.blankapp:blankapp-validation:0.0.1-alpha@aar" }快速集成
实例化一个验证器
final Validator validator = new Validator();
构建你的规则链并添加到验证器
// 邮箱必须输入,必须为邮箱格式 validator.add(Rule.with(mEtEmail).required().email()); // 用户名必须输入,只能输入字母及下划线 validator.add(Rule.with(mEtUsername).required().alphaDash()); validator.add(Rule.with(mEtName).required().minLength(2).maxLength(32)); // 密码必须输入,最小长度为6位,最大长度为32位 validator.add(Rule.with(mEtPassword).required().minLength(6).maxLength(32)); // 生日必须输入,格式为yyyy-MM-dd(1991-06-01)并且是今天之前的日期 validator.add(Rule.with(mEtBirthday).required().date("yyyy-MM-dd").before(DateValidator.TODAY)); // 年龄必须输入,并且为 18 ~ 60 岁 validator.add(Rule.with(mEtAge).required().between(18, 60)); // 简介必须输入,并且最大长度不能超过255个字符 validator.add(Rule.with(mEtBio).required().maxLength(255)); // 用户协议必须接受 validator.add(Rule.with(mCbAccepted).accepted());
阅读文档,查看所有验证规则
设置验证失败处理器
validator.setErrorHandler(new DefaultHandler());
设置验证结果监听器
validator.setValidatorListener(new ValidationListener() { @Override public void onValid() { Toast.makeText(MainActivity.this, "验证通过", Toast.LENGTH_SHORT).show(); } @Override public void onInValid(List添加自定义的字段名errors) { for (ValidationError error : errors) { Log.w("MainActivity", "Id:" + error.view().getId()); for (String key : error.errorMessages().keySet()) { Log.e("MainActivity", error.errorMessages().get(key)); } } Toast.makeText(MainActivity.this, "验证失败", Toast.LENGTH_SHORT).show(); } });
在你构建规则时,如果不指定字段名,程序将会根据传入 View 的 Id 按规则从 strings 资源里获取字段名
资源名的命名规则为:前缀 validation_field_ 与移除前缀后的 viewId 拼接组成。
如果 viewId 为 edt_email,则该字段名的资源名为 validation_field_email
P.S. 控件的命名规则必须为下划线命名法,并且必须包含前缀,如 btn_、edt_ 等
示例:
自定义默认错误消息电子邮箱 用户名 姓名 密码 生日 年龄 简介
将需要修改的错误消息添加到你的项目资源文件里,查看全部可配置的错误消息。
示例:
...欢迎给我提意见%1$s 必须接受。 %1$s 必须是一个在 %2$s 之后的日期。 %1$s 只能由字母组成。 %1$s 只能由字母、数字和破折号组成。 %1$s 只能由字母和数字组成。 ...
当前版本还处理测试阶段,暂不建议应用于真实项目中,如果你有更好的想法,或者希望加入其他功能欢迎给我提 Issues。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/12933.html
摘要:更多扩展包中有丰富的扩展包来帮你完成几乎任何你想实现的功能。我们不能把所有的扩展包都整理出来,然而,这里还是列出了一些很有用的。总之,你几乎总是能够找到一个扩展包可以解决你当前的问题。 Laravel 是一个非常流行且简单易用的PHP框架,它提供了很多基础的工具(如 RESTful 路由、内置的ORM、模版等)使你能够快速的创建应用。这意味着你可以花费更少的时间来建立应用程序的模版,给...
摘要:转载来源包管理器管理着库,并提供读取和打包它们的工具。能构建更好应用的客户端包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。很棒的组件集合。隐秘地使用和用户数据。 转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具。•npm – npm 是 javasc...
摘要:转载来源包管理器管理着库,并提供读取和打包它们的工具。能构建更好应用的客户端包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。很棒的组件集合。隐秘地使用和用户数据。 转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具。•npm – npm 是 javasc...
摘要:一个专注于浏览器端和兼容的包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。完全插件化的工具,能在中识别和记录模式。健壮的优雅且功能丰富的模板引擎。完整的经过充分测试和记录数据结构的库。 【导读】:GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-javascript 是 sorrycc 发起维护的 JS 资源列表...
摘要:官网全新的静态包管理器。官网一个整合和官网的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。官网小巧的兼容的所见即所得的富文本编辑器。官网富文本编辑器。官网由制作,适用于每天写作的富文本编辑器。 1. 包管理器 管理着 javascript 库,并提供读取和打包它们的工具。 npm:npm 是 javascript 的包管理器。官网 cnpm:cnpm 是 由于国...
阅读 2077·2021-11-23 09:51
阅读 868·2021-11-18 10:02
阅读 3209·2021-10-13 09:49
阅读 1036·2021-09-22 14:57
阅读 8882·2021-08-18 10:20
阅读 991·2019-08-30 15:55
阅读 2040·2019-08-29 16:06
阅读 3102·2019-08-29 11:14