非空格式验证框架--Validation的使用

来源:互联网 发布:万代告淘宝 编辑:程序博客网 时间:2024/05/21 05:41

android中判断控件是否为空的地方非常之多,比如登录注册,只要是需要填写东西的地方基本上都需要判空。

难度不大,但是代码相对冗杂,如果集成框架的话就相对简单多了。


1.添加依赖

[java] view plain copy
  1. compile 'com.mobsandgeeks:android-saripaar:2.0.3'  


2.布局

[java] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/activity_main"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     android:padding="10dp">  
  8.   
  9.     <EditText  
  10.         android:id="@+id/et1"  
  11.         android:layout_width="match_parent"  
  12.         android:layout_height="wrap_content"  
  13.         android:hint="请输入姓名" />  
  14.   
  15.         ......  
  16.   
  17.     <EditText  
  18.         android:id="@+id/et6"  
  19.         android:layout_width="match_parent"  
  20.         android:layout_height="wrap_content"  
  21.         android:hint="请输入姓名" />  
  22.   
  23.     <Button  
  24.         android:text="Button"  
  25.         android:layout_width="match_parent"  
  26.         android:layout_height="wrap_content"  
  27.         android:id="@+id/button" />  
  28.   
  29. </LinearLayout>  

3.获取对象并设置相应判断类型

[java] view plain copy
  1. @BindView(R.id.button)  
  2. Button button;  
  3.   
  4. @BindView(R.id.et1)  
  5. @NotEmpty(messageResId = R.string.errorMessage)//类型  
  6. @Order(1)//第几个  
  7. EditText et1;  
  8. @BindView(R.id.et2)  
  9. @NotEmpty(messageResId = R.string.errorMessage)  
  10. @Order(2)  
  11. EditText et2;  

strings.xml

[java] view plain copy
  1. <resources>  
  2.     <string name="app_name">ValidationDemo</string>  
  3.     <string name="errorMessage">不能为空</string>  
  4. </resources>  

4.onCreate中初始化

[java] view plain copy
  1. validator = new Validator(this);  
  2. validator.setValidationListener(this);  

两个监听方法

[java] view plain copy
  1. @Override  
  2. public void onValidationSucceeded() {//不为空的时候执行  
  3.     //do somethings  
  4.     //sendSubmit();  
  5. }  
  6.   
  7. @Override  
  8. public void onValidationFailed(List<ValidationError> errors) {//为空的时候执行  
  9.     for (ValidationError error : errors) {  
  10.         View view = error.getView();  
  11.         String message = error.getCollatedErrorMessage(this);  
  12.         if (view instanceof EditText) {  
  13.             ((EditText) view).setError(message);  
  14.         }  
  15.     }  
  16. }  


5.调用

[java] view plain copy
  1. @Override  
  2. public void onClick(View view) {  
  3.     switch (view.getId()) {  
  4.         case R.id.button:  
  5.             validator.validate();  
  6.             break;  
  7.     }  
  8. }  


6.扩展(非空、邮箱等)

NotEmpty
@NotEmpty(messageId = R.string.validation_name, order = 1)
private EditText mNameEditText;


MaxLength
MinLength

@MinLength(value = 1, messageId = R.string.validation_participants, order = 2)
private EditText mNameEditText;


MaxValue
MinValue

@MinValue(value = 2L, messageId = R.string.validation_name_length)
private EditText mEditNumberOfParticipants;


MaxNumberValue
MinNumberValue

@MinNumberValue(value = "5.5", messageId = R.string.validation_name_length)
private EditText mEditPotentialOfHydrogen;


RegExp

@RegExp(value = EMAIL, messageId = R.string.validation_valid_email)
private EditText mEditEmail;
@RegExp(value = "^[0-9]+$", messageId = R.string.validation_valid_count)
private EditText mEditCount;


DateInFuture

@DateInFuture(messageId = R.string.validation_date)
private TextView mTxtDate;


DateNoWeekend

@DateNoWeekend(messageId = R.string.validation_date_weekend)
private TextView mTxtDate;


Custom

@Custom(value = MyVeryOwnValidator.class, messageId = R.string.validation_custom)
private EditText mNameEditText;



Demo地址:https://github.com/yechaoa/ValidationDemo



github:https://github.com/ragunathjawahar/android-saripaar/


原创粉丝点击