[开源项目] Android校验库 - FireEye

2023-10-27 20:40

本文主要是介绍[开源项目] Android校验库 - FireEye,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简单易用的Android校验库。

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

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

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

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


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() {@Overridepublic void dismiss(EditText field) {field.setError(null);}@Overridepublic void show(EditText field, String message) {field.setError(message);Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();}};// 绑定表单Viewfinal 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中") {@Overridepublic boolean test(String inputValue) {// 校验通过时返回 truereturn inputValue.equal("AABB");}});// 加入到某个View的输入对象中:formValidator.add(passwordInput, new AbstractValidator("出错时,此消息被返回并显示到EditText中") {@Overridepublic boolean test(String inputValue) {// 校验通过时返回 truereturn 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 - 交流方式

  • Email: yoojia.chen@gmail.com
  • QQ: 228441083
  • QQ群:106904788

转载于:https://www.cnblogs.com/zsychanpin/p/6895506.html

这篇关于[开源项目] Android校验库 - FireEye的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288259

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地