[BLANKAPP-VALIDATION]專一於Android表單驗證,用方法鏈構建你的驗證規則

專一於 Android 表單驗證,用方法鏈構建你的驗證規則。php

野生程序員一枚,喜歡重複發明輪子,~java

當即關注 JianyingLiandroid

項目託管在GitHub,歡迎Star!git

https://github.com/lijy91/blankapp-validation程序員

爲何重複造輪子

Android表單驗證的庫已經很多,例如經過註解方法的 android-saripaar,直接自定義控件的 android-edittext-validator 等等,然而這幾種方式我都以爲過於麻煩,都不是個人菜!github

並且恰好最近在用 Laravel 作一個項目,被它提供的表單驗證功能迷倒了,至關的簡單、直觀,構建驗證規則也很是的方便,因此才萌生了本身寫這個庫的想法,經過鏈式調用構建咱們的表單驗證規則。app

示例maven

$rules = [
    'username' => 'required|between:4,32|alpha_dash|unique:users',
    'email'    => 'required|email|unique:users',
    'password' => 'required|between:6,32',
];
$this->validate($request, $rules);

支持驗證的控件

支持如下控件或派生自如下的控件ide

  • EditText測試

  • CompoundButton

如何使用

添加依賴

一、只需將 mvn-repo 地址添加到您的項目根目錄 build.gradle 文件:

repositories {
    maven { url 'https://raw.githubusercontent.com/lijy91/mvn-repo/master/' }
    jcenter()
}

二、在要集成的模塊 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討論羣

相關文章
相關標籤/搜索