Androidアプリ開発者のためのTips集。Androidのダイアログは、単なるOK/キャンセルの確認だけではなく、複数のアイテムから選択する「セレクトボックス」の動作をさせることもできる。アイテム選択、ラジオボタン、チェックボックスの3パターンについて解説する。
用途 | 便利 |
---|---|
カテゴリ | 画面制御 |
レベル | 中級 |
動作確認環境 | Android 2.3.3(GingerBread) エミュレータにて動作確認 |
備考 | 今回のTipsは上記環境で動作確認・検証を行っています |
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.