19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バリデーションライブラリ Android Sarippr の導入

Last updated at Posted at 2015-11-05

Android Saripprとは

ragunathjawahar/android-saripaar
アノテーションによって入力バリデーションを行ってくれるとても便利なライブラリです。
バリデートの内容やエラーメッセージのカスタムもできます!

Android Saripprの使い方

※2015年11月時点の情報です

  • build.gradleに依存関係を追加します
dependencies {
    compile 'com.mobsandgeeks:android-saripaar:2.0.3'
}
  • ProGuardを追加します
-keep class com.mobsandgeeks.saripaar.** {*;}
-keep @com.mobsandgeeks.saripaar.annotation.ValidateUsing class * {*;}
// 必須項目、メールアドレス形式であるかチェックする
@NotEmpty
@Email
private EditText emailEditText;

// 6文字以上入力がなければエラー
@Password(min = 6)
private EditText passwordEditText;

// チェックがない場合は指定したエラーメッセージを出力
// message指定のない場合はデフォルトの英文メッセージが出力されます
@Checked(message = "You must agree to the terms.")
private CheckBox iAgreeCheckBox;
  • ValidationListenerをセットする
public class RegistrationActivity extends AppCompatActivity implements ValidationListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        Varidator validator = new Validator(this);
        validator.setValidationListener(this);
        
        // バリデーション開始
        validator.validate();
    }
    
    @Override
    public void onValidationSucceeded() {
        Toast.makeText(this, "バリデーションを通過", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onValidationFailed(List<ValidationError> errors) {
        for (ValidationError error : errors) {
        	  // エラーになったViewを取得する
            View view = error.getView();
            // エラーメッセージを取得する(指定のない場合はデフォルトのメッセージ)
            String message = error.getCollatedErrorMessage(this);

            // エラーメッセージをEditTextやInputTextViewに表示する
            if (view instanceof EditText) {
                ((EditText) view).setError(message);
                mEmailTextInput.setError(message);
            } else {
                Toast.makeText(this, message, Toast.LENGTH_LONG).show();
            }
        }
    }

以上です!これだけでもよく使うバリデーションを簡単に行えますが、
下記のようにカスタムすることもできます。

エラーメッセージを変更したい!

指定したアノテーションに渡して変更することができます。

@NotEmpty(message = "メールアドレスを入力してください")
EditText mEmailView;

// リソースIDでも指定可能
@NotEmpty(messageResId = R.string.error_email_required)
EditText mEmailView;

独自のバリデーションを設定したい!

QuickRule でカスタムルールを作り、指定することができます。

QuickRule idRule = new QuickRule<EditText>() {
    @Override
    public boolean isValid(View view) {
        // 独自のバリデーションを追加し結果をreturnする
        String str = null;
        if(view instanceof EditText) {
            str = ((EditText) view).getText().toString();
        } 
        return str.length() < 6 && TextUtils.isDigitsOnly(str);
    }
    
    @Override
    public boolean isValid(Object o) {
        // isValid(Object) も使える
        return result;
    }

    @Override
    public String getMessage(Context context) {
        // エラー文字列の指定
        return getResources().getString(R.string.error_invalid_id);
    }
};
Validator validator = new Validator(this);
// 特定のViewにカスタムRuleを指定
// 今回の例では QuickRule に<EditText>の型指定をしたのでEditTextに対して指定する
validator.put(mIdView, idRule);
19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?