連載
» 2012年01月17日 11時21分 UPDATE

Android Tips(4):アイテム選択のダイアログ

Androidアプリ開発者のためのTips集。Androidのダイアログは、単なるOK/キャンセルの確認だけではなく、複数のアイテムから選択する「セレクトボックス」の動作をさせることもできる。アイテム選択、ラジオボタン、チェックボックスの3パターンについて解説する。

[秋本耕平(イーフロー),@IT MONOist]
Android Tips

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 アイテム選択のダイアログの例

ラジオボタンのダイアログ

 ラジオボタンを使用して、複数のアイテムの中からどれか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();
        }
    };


ラジオボタンのダイアログ 画像2 ラジオボタンのダイアログの例

チェックボックスのダイアログ

 チェックボックスを使用して、複数のアイテムを選択させるダイアログを作成できる。

 このチェックボックスのダイアログを作成するには、以下のメソッドを使用する。

ダイアログにチェックボックス付きアイテムのリストを設定する:

    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();
        }
    };


チェックボックスのダイアログ 画像3 チェックボックスのダイアログの例

Android コーナー

Androidコーナー
「Android(アンドロイド)」の組み込み機器への適用からアプリ開発、レポート、ニュースなどさまざまな技術情報・最新動向をお届けする!!

>>コーナーTOPはこちらから


Copyright© 2017 ITmedia, Inc. All Rights Reserved.