fc2ブログ

2013
06/17

Android 入力チェック(バリデーション)ってどうするの? その3

Android

前回はAndroidFormEnhancerというライブラリを取り込んだので
今回は実際にそれを使ってみる。

こちらに作者ご本人からの説明があるので
それに素直に従って実装してみる。
https://github.com/ksoichiro/AndroidFormEnhancer/blob/master/README.ja.md

まず、こんなフォームを用意した。
enhancerTestフォーム


次に、このフォームの入力項目を定義したクラスを1つ作成する。

public class TestForm {

public String name;

public String gender;

public String birthday;

public List<String> hobbies;

}



そして今度はそれと入力項目のViewをidで紐づけていく。
名前(name)と性別(gender)を例とする。

▼TestForm.java

@Widget(id = R.id.testform_edittext_name)
public String name;

@Widget(id = R.id.testform_radiogroup_gender, values = {
@WidgetValue(id = R.id.testform_radiobutton_gender_male, value = "M"),
@WidgetValue(id = R.id.testform_radiobutton_gender_female, value = "F") })
public String gender;


▼activity_android_form_enhancer_test.xml

<EditText
android:id="@+id/testform_edittext_name" />

<RadioGroup
android:id="@+id/testform_radiogroup_gender" />
<RadioButton
android:id="@+id/testform_radiobutton_gender_male" />
<RadioButton
android:id="@+id/testform_radiobutton_gender_female" />
</RadioGroup>


そしていよいよ、チェック内容を定義する。
まずは名前。入力必須とする。

▼TestForm.java

@Widget(id = R.id.testform_edittext_name)
@Required
public String name;


次に、性別。こちらも入力必須。

▼TestForm.java

@Widget(id = R.id.testform_radiogroup_gender, values = {
@WidgetValue(id = R.id.testform_radiobutton_gender_male, value = "M"),
@WidgetValue(id = R.id.testform_radiobutton_gender_female, value = "F") })
@Required
public String gender;



最後にチェックを行う。
「チェック」ボタンを押下したときにチェックを行うこととする。
というわけで、下記のocClickメソッドの処理に注目してほしい。
▼AndroidFormEnhancerTestActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
~略~
Button checkButton = (Button) findViewById(R.id.testform_button_submit);
checkButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
ValidationResult result = new FormHelper(TestForm.class, AndroidFormEnhancerTestActivity.this)
.validate();
if (result.hasError()) {
// エラーメッセージを表示します
Toast.makeText(AndroidFormEnhancerTestActivity.this, result.getAllSerializedErrors(),
Toast.LENGTH_SHORT).show();
} else {

Toast.makeText(AndroidFormEnhancerTestActivity.this, "エラーはありません", Toast.LENGTH_SHORT).show();
}
}
});
}

FormHelperの第一引数に、さきほど定義したフォームのクラスを設定するのがポイント。
なんとこれだけでロジックごりごりせずに入力チェックが行える。

enhancerTestチェック
スポンサーサイト



CM

NAME
TITLE
MAIL
URL
PASS (削除時に必要)
SECRET 管理者にだけ表示を許可する
COMMENT&
DECORATION

TB

トラックバック

http://novdev.blog.fc2.com/tb.php/13-c948c9d3

この記事にトラックバックする(FC2ブログユーザー)

プロフィール

nov

Author:nov
パセリはおやつです。

最新コメント

最新トラックバック

タグクラウドとサーチ

> tags

検索フォーム

ブロとも申請フォーム

QRコード
QR