アイテム選択のダイアログ:Androidアプリケーション開発者のためのTips集(4)
Androidアプリ開発者のためのTips集。Androidのダイアログは、単なるOK/キャンセルの確認だけではなく、複数のアイテムから選択する「セレクトボックス」の動作をさせることもできる。アイテム選択、ラジオボタン、チェックボックスの3パターンについて解説する。
Tips概要と動作検証環境
| 用途 | 便利 |
|---|---|
| カテゴリ | 画面制御 |
| レベル | 中級 |
| 動作確認環境 | Android 2.3.3(GingerBread) エミュレータにて動作確認 |
| 備考 | 今回のTipsは上記環境で動作確認・検証を行っています |
Tips 4:アイテム選択のダイアログ
Androidのダイアログ(AlertDialog)は、単なるOK/キャンセルの確認だけではなく、複数のアイテムから選択する「セレクトボックス」の動作をさせることもできる。
Androidのダイアログには、以下の3パターンが用意されている。
- アイテム選択
- ラジオボタン
- チェックボックス
アイテム選択のダイアログ
ダイアログにOK/キャンセルなどのボタンを配置する代わりに、複数のアイテムを表示して、どれか1つを選ばせるアイテム選択式のダイアログを作成できる。
このアイテム選択ダイアログを作成するには、AlertDialog.Builderの以下のメソッドを使用する。
ダイアログにアイテムのリストを設定する:
public AlertDialog.Builder setItems (CharSequence[] items, DialogInterface.OnClickListener listener)
第1引数には、ダイアログに表示するアイテムの配列を指定する。第2引数には、アイテム選択時の処理を実装したDialogInterface.OnClickListenerを指定する。
例:アイテム選択ダイアログを表示する
// アイテム選択ダイアログを表示する例 //
public void dialog1(Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("選択式のダイアログ");
// 表示アイテムを指定する //
String[] items = {"item 0","item 1","item 2","item 3"};
builder.setItems( items, mItemListener );
AlertDialog dialog = builder.create();
dialog.show();
}
// アイテムのリスナー //
DialogInterface.OnClickListener mItemListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogTestActivity.this, "Item " + which + " clicked.", Toast.LENGTH_SHORT).show();
}
};
ラジオボタンのダイアログ
ラジオボタンを使用して、複数のアイテムの中からどれか1つを選択させるダイアログを作成できる。
このラジオボタンのダイアログを作成するには、以下のメソッドを使用する。
ダイアログにラジオボタン付きアイテムのリストを設定する:
Builder android.app.AlertDialog.Builder.setSingleChoiceItems(CharSequence[] items, int checkedItem, OnClickListener listener)
第1引数には、ダイアログに表示するアイテムの配列を指定する。第2引数には、初期の選択位置を指定する。初期選択値を“なし”にしたい場合は、「−1」を指定する。第3引数にはアイテム選択時の処理を実装したDialogInterface.OnClickListenerを指定する。
例:ラジオボタン付きアイテム選択ダイアログを表示する
// ラジオボタン付きアイテム選択ダイアログを表示する例 //
public void dialog2(Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("ラジオボタンダイアログ");
// 表示アイテムを指定する //
String[] items = {"item 0","item 1","item 2","item 3"};
builder.setSingleChoiceItems(items, 0, mItemListener);
// 決定・キャンセル用にボタンも配置 //
builder.setPositiveButton("OK", mButtonListener );
builder.setNeutralButton ("Cancel", mButtonListener );
AlertDialog dialog = builder.create();
dialog.show();
}
// アイテムのリスナー //
DialogInterface.OnClickListener mItemListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DialogTestActivity.this, "Item " + which + " clicked.", Toast.LENGTH_SHORT).show();
}
};
// ボタンのリスナー //
DialogInterface.OnClickListener mButtonListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String btnStr = "";
switch( which ){
case AlertDialog.BUTTON_POSITIVE:
btnStr = "OK";
break;
case AlertDialog.BUTTON_NEUTRAL:
btnStr = "Cancel";
break;
}
Toast.makeText(DialogTestActivity.this, btnStr + " button clicked.", Toast.LENGTH_SHORT).show();
}
};
チェックボックスのダイアログ
チェックボックスを使用して、複数のアイテムを選択させるダイアログを作成できる。
このチェックボックスのダイアログを作成するには、以下のメソッドを使用する。
ダイアログにチェックボックス付きアイテムのリストを設定する:
Builder android.app.AlertDialog.Builder.setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener)
第1引数にはダイアログに表示するアイテムの配列を指定する。第2引数には初期の選択状態をboolean型の配列で指定する。第3引数にはアイテム選択時の処理を実装したDialogInterface.OnMultiChoiceClickListenerを指定する。
例:チェックボックス付きアイテム選択ダイアログを表示する
// チェックボックス付きアイテム選択ダイアログを表示する例 //
public void dialog3(Context context){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("チェックボックスダイアログ");
// 表示アイテムと、初期選択状態を設定する //
String[] items = {"item 0","item 1","item 2","item 3"};
boolean[] check = {true,false,false,false};
builder.setMultiChoiceItems(items, check, mCheckListener);
// 決定・キャンセル用にボタンも配置 //
builder.setPositiveButton("OK", mButtonListener );
builder.setNeutralButton ("Cancel", mButtonListener );
AlertDialog dialog = builder.create();
dialog.show();
}
// チェックボックスのリスナー //
DialogInterface.OnMultiChoiceClickListener mCheckListener = new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
String checked = isChecked ? " checked." : " released.";
Toast.makeText(DialogTestActivity.this, "Item " + which + checked, Toast.LENGTH_SHORT).show();
}
};
// ボタンのリスナー //
DialogInterface.OnClickListener mButtonListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String btnStr = "";
switch( which ){
case AlertDialog.BUTTON_POSITIVE:
btnStr = "OK";
break;
case AlertDialog.BUTTON_NEUTRAL:
btnStr = "Cancel";
break;
}
Toast.makeText(DialogTestActivity.this, btnStr + " button clicked.", Toast.LENGTH_SHORT).show();
}
};
≫連載「Androidアプリケーション開発者のためのTips集」の目次
Copyright © ITmedia, Inc. All Rights Reserved.



