1. 程式人生 > >非空格式驗證框架--Validation的使用

非空格式驗證框架--Validation的使用

android中判斷控制元件是否為空的地方非常之多,比如登入註冊,只要是需要填寫東西的地方基本上都需要判空。

難度不大,但是程式碼相對冗雜,如果整合框架的話就相對簡單多了。


1.新增依賴

  1. compile 'com.mobsandgeeks:android-saripaar:2.0.3'

2.佈局

  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.     <EditText  
  9.         android:id="@+id/et1"
  10.         android:layout_width="match_parent"
  11.         android:layout_height="wrap_content"
  12.         android:hint="請輸入姓名"
     />  
  13.         ......  
  14.     <EditText  
  15.         android:id="@+id/et6"
  16.         android:layout_width="match_parent"
  17.         android:layout_height="wrap_content"
  18.         android:hint="請輸入姓名" />  
  19.     <Button  
  20.         android:text="Button"
  21.         android:layout_width="match_parent"
  22.         android:layout_height="wrap_content"
  23.         android:id="@+id/button" />  
  24. </LinearLayout>  

3.獲取物件並設定相應判斷型別
  1. @BindView(R.id.button)  
  2. Button button;  
  3. @BindView(R.id.et1)  
  4. @NotEmpty(messageResId = R.string.errorMessage)//型別
  5. @Order(1)//第幾個
  6. EditText et1;  
  7. @BindView(R.id.et2)  
  8. @NotEmpty(messageResId = R.string.errorMessage)  
  9. @Order(2)  
  10. EditText et2;  

strings.xml

  1. <resources>  
  2.     <string name="app_name">ValidationDemo</string>  
  3.     <string name="errorMessage">不能為空</string>  
  4. </resources>  

4.onCreate中初始化
  1. validator = new Validator(this);  
  2. validator.setValidationListener(this);  

兩個監聽方法

  1. @Override
  2. publicvoid onValidationSucceeded() {//不為空的時候執行
  3.     //do somethings
  4.     //sendSubmit();
  5. }  
  6. @Override
  7. publicvoid onValidationFailed(List<ValidationError> errors) {//為空的時候執行
  8.     for (ValidationError error : errors) {  
  9.         View view = error.getView();  
  10.         String message = error.getCollatedErrorMessage(this);  
  11.         if (view instanceof EditText) {  
  12.             ((EditText) view).setError(message);  
  13.         }  
  14.     }  
  15. }  
5.呼叫
  1. @Override
  2. publicvoid 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;