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 * {*;}
- バリデーションを行いたいViewに対してアノテーションを追加します
使用できるアノテーション一覧
// 必須項目、メールアドレス形式であるかチェックする
@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);