[BLANKAPP-VALIDATION] 专注于 Android 表单验证,用方法链构建你的验证规则 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lijy91
V2EX    Android

[BLANKAPP-VALIDATION] 专注于 Android 表单验证,用方法链构建你的验证规则

  •  
  •   lijy91 2016-06-29 09:55:14 +08:00 11897 次点击
    这是一个创建于 3420 天前的主题,其中的信息可能已经有所发展或是发生改变。

    专注于 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<ValidationError> 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 拼接组成。 如果 viewIdedt_email,则该字段名的资源名为 validation_field_email

    P.S. 控件的命名规则必须为下划线命名法,并且必须包含前缀,如 btn_edt_

    示例:

    <string name="validation_field_email">电子邮箱</string> <string name="validation_field_username">用户名</string> <string name="validation_field_name">姓名</string> <string name="validation_field_password">密码</string> <string name="validation_field_birthday">生日</string> <string name="validation_field_age">年龄</string> <string name="validation_field_bio">简介</string> 

    自定义默认错误消息

    将需要修改的错误消息添加到你的项目资源文件里,查看全部可配置的错误消息

    示例:

    ... <string name="validation_error_message_accepted">%1$s 必须接受。</string> <string name="validation_error_message_after">%1$s 必须是一个在 %2$s 之后的日期。</string> <string name="validation_error_message_alpha">%1$s 只能由字母组成。</string> <string name="validation_error_message_alpha_dash">%1$s 只能由字母、数字和破折号组成。</string> <string name="validation_error_message_alpha_num">%1$s 只能由字母和数字组成。</string> ... 

    欢迎给我提意见

    当前版本还处理测试阶段,暂不建议应用于真实项目中,如果你有更好的想法,或者希望加入其他功能欢迎给我提 Issues

    BLANKAPP-VALIDATION 讨论群

    1 条回复    2016-06-29 10:13:28 +08:00
    Override
        1
    Override  
       2016-06-29 10:13:28 +08:00
    我仿佛又听到有人在背后 @我
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2599 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:20 PVG 17:20 LAX 01:20 JFK 04:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86