2013
06/17
Android 入力チェック(バリデーション)ってどうするの? その3
前回はAndroidFormEnhancerというライブラリを取り込んだので
今回は実際にそれを使ってみる。
こちらに作者ご本人からの説明があるので
それに素直に従って実装してみる。
https://github.com/ksoichiro/AndroidFormEnhancer/blob/master/README.ja.md
まず、こんなフォームを用意した。

次に、このフォームの入力項目を定義したクラスを1つ作成する。
そして今度はそれと入力項目のViewをidで紐づけていく。
名前(name)と性別(gender)を例とする。
▼TestForm.java
▼activity_android_form_enhancer_test.xml
そしていよいよ、チェック内容を定義する。
まずは名前。入力必須とする。
▼TestForm.java
次に、性別。こちらも入力必須。
▼TestForm.java
最後にチェックを行う。
「チェック」ボタンを押下したときにチェックを行うこととする。
というわけで、下記のocClickメソッドの処理に注目してほしい。
▼AndroidFormEnhancerTestActivity.java
FormHelperの第一引数に、さきほど定義したフォームのクラスを設定するのがポイント。
なんとこれだけでロジックごりごりせずに入力チェックが行える。

今回は実際にそれを使ってみる。
こちらに作者ご本人からの説明があるので
それに素直に従って実装してみる。
https://github.com/ksoichiro/AndroidFormEnhancer/blob/master/README.ja.md
まず、こんなフォームを用意した。

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

スポンサーサイト
CM
TB
プロフィール
Author:nov
パセリはおやつです。
最新コメント
最新トラックバック
タグクラウドとサーチ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード
