简单易用的Android校验库。

这是一个简单Android校验库,按配置来验证用户输入的表单信息。

仅仅须要几行代码,就可以验证用户输入,而且将验证错误反馈给用户。

它内置了大量经常使用的验证类型,足以满足你的功能需求。

它另一个可扩展的验证选项。你能够通过扩展接口加入你须要的验证方式。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnlvY2E=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Gradle
依赖

Add repository

    dependencies {
compile 'com.github.chenyoca:android-validation:1.0@aar'
}

Maven

    <dependency>
<groupId>com.github.chenyoca</groupId>
<artifactId>android-validation</artifactId>
<version>1.0</version>
<type>aar</type>
<scope>provided</scope>
</dependency>

已内置支持的校验方式

  • Required 必填选项
  • NotBlank 非空数据
  • Digits 仅数字
  • IsDate 是否为有效日期
  • IsTime 是否为有效时间
  • IsDateTime 是否为有效的日期和时间
  • IsFuture 是否为当前时间之后的日期和时间
  • IsPast 是否为当前时间之前的日期和时间
  • Email 电子邮件
  • EqualTo 与指定值同样
  • Host 主机地址
  • URL Http URL
  • IPv4 IPv4地
  • RangeLength 指定长度范围
  • MinLength 最小长度
  • MaxLength 最大长度
  • Numeric 数值
  • CreditCard 信用卡号
  • RangeValue 最值范围
  • MinValue 最小值
  • MaxValue 最大值
  • MobilePhone 中国的手机号码

How
to usage - 怎样使用

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

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

    // 自己定义显示出错消息的方式,默认是在 EditText 右边显示一个浮动提示框。
MessageDisplay messageDisplay = new MessageDisplay() {
@Override
public void dismiss(EditText field) {
field.setError(null);
} @Override
public void show(EditText field, String message) {
field.setError(message);
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
}; // 绑定表单View
final LinearLayout form = (LinearLayout) findViewById(R.id.form); // 默认是在 EditText 右边显示一个浮动提示框。 // final FormValidator av = new FormValidator(form); // 指定自己定义显示出错消息的方式,
final FormValidator av = new FormValidator(form, messageDisplay); av.add(R.id.form_field_1, Type.Required, Type.MobilePhone);
av.add(R.id.form_field_2, Type.CreditCard);
av.add(R.id.form_field_3, Type.Digits, Type.MaxLength.value(20));
av.add(R.id.form_field_4, Type.Email); // 使用`ValuesLoader`使得当校验时。才载入校验參数`values`。
av.add(R.id.form_field_5, Type.EqualsTo.values(new TextViewValuesLoader(form,R.id.form_field_4)));
av.add(R.id.form_field_6, Type.Host);
av.add(R.id.form_field_7, Type.URL);
av.add(R.id.form_field_8, Type.MaxLength.value(5));
av.add(R.id.form_field_9, Type.MinLength.value(4));
av.add(R.id.form_field_10, Type.RangeLength.values(4,8));
av.add(R.id.form_field_11, Type.NotBlank);
av.add(R.id.form_field_12, Type.Numeric);
av.add(R.id.form_field_13, Type.MaxValue.value(100));
av.add(R.id.form_field_14, Type.MinValue.value(20));
av.add(R.id.form_field_15, Type.RangeValue.values(18,30)); // 加入不在Form中的输入框
EditText inputNotInForm = (EditText)findViewById(R.id.input_not_in_form);
av.add(inputNotInForm, Type.IsTime); // 输出调试信息
av.debug(true); // 应用输入框的输入法布局样式
av.applyInputType(); TestResult r = av.test(); if(r.passed){
// 校验通过
}else{
// 校验失败
}

怎样扩展?

通过 FormValidator 的扩展接口,加入你自己定义的校验实现类

    // 加入到某个ViewID的输入对象中:

    formValidator.add(R.id.username, new AbstractValidator("出错时。此消息被返回并显示到EditText中") {
@Override
public boolean test(String inputValue) {
// 校验通过时返回 true
return inputValue.equal("AABB");
}
}); // 加入到某个View的输入对象中: formValidator.add(passwordInput, new AbstractValidator("出错时,此消息被返回并显示到EditText中") {
@Override
public boolean test(String inputValue) {
// 校验通过时返回 true
return inputValue.equal("CCDD");
}
});

注意

校验顺序

校验顺序按add(...)加入配置的顺序进行校验。

假设加入 Required 校验类型,则 Required 不管在哪个顺序被加入,都会被首先校验。

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

当EditText为空值时,假设加入Required校验规则。则校验失败。假设没有,则校验通过并跳过后面的校验类型。

自己定义消息

自己定义消息中假设须要与 value(...) / values(...) 中的參数匹配。请使用 {$1} 和 {$2} 做占位符。

e.g:

Types.MaxLength.values(10,140).message("您最多能够输入{$1}到{$2}个文字!

");

当校验失败时。提示的消息内容为:您最多能够输入10到140个文字!

其他扩展接口

将校验条件应用到EditText中

如“最大长度”、“邮件地址”等校验条件。能够将EditText的输入类型自己主动切换至对应类型。

获取Form中被校验EditText的值

       String username = validator.getValue(R.id.form_field_1);

获取Form中没有被校验EditText的值

       String username = validator.getExtraValue(R.id.form_field_others);

获取Form中被校验EditText的对象

       EditText username = validator.getView(R.id.form_field_1,EditText.class);

Contact
- 交流方式


[开源项目] Android校验库 - FireEye的更多相关文章

  1. Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...

  2. 最全面的iOS和Mac开源项目和第三方库汇总

    标签: UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UIT ...

  3. [Android]Google 开源的 Android 排版库:FlexboxLayout

    最近Google开源了一个项目叫「FlexboxLayout」. 1.什么是 Flexbox 简单来说 Flexbox 是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方 ...

  4. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

  5. GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  6. GitHub 优秀Android 开源项目

    阅读目录 1.Xabber客户端 2.oschina客户端 3.手机安全管家 4.星座连萌 5.玲闹铃 6.魔乐盒 7.PWP日历 8.Apollo音乐播放器 9.夏普名片识别 10.高仿人人网 11 ...

  7. GitHub上最火的74个Android开源项目

    GitHub上最火的74个Android开源项目 1.ActionBarSherlock ActionBarSherlock应该算得上是GitHub上最火的Android开源项目了,它是一个独立的库, ...

  8. 直接拿来用!最火的Android开源项目(三部完整版)

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  9. 【转】GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

随机推荐

  1. Github从注册到上传本地项目详解!!!

    由于本人对于git并不是很熟悉,所以能从一个初学者或者说是未知者的角度去给大家解释每一步的操作. 另外如果本文不够详细的话,请参考 廖雪峰git教程  偷偷有码git从入门到上传本地项目 那么开始! ...

  2. PTA 循环单链表区间删除 (15 分)

    本题要求实现带头结点的循环单链表的创建和单链表的区间删除.L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于m ...

  3. 「JavaScript」同步、异步、回调执行顺序之经典闭包setTimeout分析

    聊聊同步.异步和回调 同步,异步,回调,我们傻傻分不清楚, 有一天,你找到公司刚来的程序员小T,跟他说:“我们要加个需求,你放下手里的事情优先支持,我会一直等你做完再离开”.小T微笑着答应了,眼角却滑 ...

  4. C#递归查询

    一.sql --构造测试数据: 只作演示用 CREATE TABLE [dbo].[Tim_LinqTable]( [Id] int PRIMARY KEY IDENTITY(1,1) NOT NUL ...

  5. Python连接Oracle数据库

    今天使用Python连接数据库,连接没有问题,就是中文显示乱码,网上找了很多解决方案, 最后选择使用这个 #!/usr/bin/env python # -*- coding:utf-8 -*- #A ...

  6. PullToRefreshListView插件初次进入页面自动刷新

    只要将PullToRefreshListView源码中的: @Override protected void onRefreshing(final boolean doScroll) { /** * ...

  7. 【爬虫】利用Scrapy抓取京东商品、豆瓣电影、技术问题

    1.scrapy基本了解 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说,网络抓 ...

  8. js实际工作中的技能点

    1.基础知识 a.原型,原型链 b.作用域,闭包 c.异步,单线程 2.JS API a.DOM操作 b.Ajax c.事件绑定 3.开发环境 a.版本管理(git) b.模块化(require.js ...

  9. SSM框架开发web项目系列(二) MyBatis真正的力量

    前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...

  10. C++11 标准新特性: 右值引用与转移语义

    文章出处:https://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ 新特性的目的 右值引用 (Rvalue Referene) ...