Mon 06/17 2013

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

16:340
Android
前回は必須チェックだけだったので、今回はそれ以外についても書いてみる。

前回の画像でチラリと出現しているが、
今回はチェックボックスと日付のチェックについて。

まずはチェックボックス。

enhancerTestチェック

上記の画像を見ると、メッセージに「hobbiesは少なくとも2個選択してください」と表示されている。
そう!必須選択個数を簡単に設定できるのだ!便利!!

さっそく、定義方法を紹介。
下記コードの@Requiredに注目。
※@Widgetの定義は前回のラジオボタンと同じ方法。(RadioGroupの代わりにLinearLayoutを使おう!)
▼TestForm.java

@Widget(id = R.id.testform_checkbox_hobby, values = {
@WidgetValue(id = R.id.testform_checkbox_hobby_cook, value = "cook"),
@WidgetValue(id = R.id.testform_checkbox_hobby_drive, value = "drive"),
@WidgetValue(id = R.id.testform_checkbox_hobby_pet, value = "drive") })
@Required(atLeast = 2)
public List<String> hobbies;


たったこれだけ。実に簡単。

次に、日付のチェックについて説明する。
日付のチェックは2種類用意されている。
ただ、日付形式で入力されているかどうかをチェックする「@DatePattern」と
さらに過去の日付であるかどうかもチェックする「@PastDate」。
今回は生年月日なので、過去の日付かどうかチェックする。


@Widget(id = R.id.testform_edittext_birthday)
@Required
@PastDate(value = "yyyy-MM-dd", allowToday = true)
public String birthday;


上記の通り、@PastDateをフィールドに付与するだけ。
valueは任意なので指定しなくてもいい。
デフォルトは yyyy/MM/dd となる。(※端末の言語設定が日本語の場合)

allowTodayは今日を許可するかどうか。上記は今日を許可する(エラーとしない)設定。
こちらも任意で、デフォルトはfalseになっている。

ではでは表示を見てみよう。

▼過去の日付だが、形式に誤りがある
enhancerTestフォーム3

▼形式は正しいが、未来の日付である
enhancerTestフォーム4

▼OK
enhancerTestフォーム5

欲を言うと、1番目の形式誤りは
「birthdayはyyyy-MM-dd形式で入力してください」と表示してほしいが(わがまま)
こんな便利なライブラリを本当にありがとうございます。
Comment form
Name
URL
Title
Comment
Pass (Edit)
管理者にのみ公開
Trackback URL
http://novdev.blog.fc2.com/tb.php/14-20764a44