[Android]ダイアログを表示する。その2。 | 妄想プログラマのらくがき帳

2013年3月25日月曜日

[Android]ダイアログを表示する。その2。

「いろんな種類のダイアログの表示方法についてまとめてみました。」のその2です。

・リスト選択のダイアログ

リスト項目から1つを選択するタイプのダイアログです。

// リスト項目を定義
final String[] listItems = new String[] { "small", "medium", "large" };

AlertDialog.Builder builder = new AlertDialog.Builder(this); // ※thisはActivity自身
builder.setTitle("サイズ選択")
        .setItems(listItems, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                System.out.println("selected size => " + listItems[which]);
            }
        });

builder.show();
AlertDialogと同じくAlertDialog.Builderを使います。
AlertDialog.Builder.setItems()でリスト項目を設定することで、リスト選択のダイアログになります。
リストで何が選択されたかは、onClick()の第2引数whichに格納されているindexで分かります
(上のコードの場合、"small"が選択されたらwhichには0が格納されます)。


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

チェックボックスで複数選択するタイプのダイアログです。

// チェック項目を定義
final String[] checkItems = new String[] { "rock", "pop", "metal", "jazz" };

AlertDialog.Builder builder = new AlertDialog.Builder(this); // ※thisはActivity自身
builder.setTitle("ジャンル選択")
        .setMultiChoiceItems(checkItems, null, new OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                // ここでチェック状態を一時保存しておく
                if (isChecked) {
                    System.out.println("checked => " + checkItems[which]);
                }
                else {
                    System.out.println("unchecked => " + checkItems[which]);
                }
            }
        })
        .setPositiveButton("OK", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ここで一時保存しておいた選択状態を正式保存する。
            }

        })
        .setNegativeButton("Cancel", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ダイアログでの変更を破棄するため、何もしない。
            }
        });

builder.show();
これもAlertDialog.Builderを使います。
AlertDialog.Builder.setMultiChoiceItems()で項目を設定することで、チェックボックスのダイアログになります。

OnMultiChoiceClickListener.onClick()はチェックボックスのON/OFFが変更されるたびに呼ばれ、
引数whichには変更された項目のindex、引数isCheckedには変更後チェック状態が格納されています。
onClick()内で一時変数に各項目のチェック状態を保存しておき、「肯定ボタン」が押されたときに一時変数を本体や設定に反映するというのが一般的な使い方だと思います。


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

ラジオボタンで単数選択するタイプのダイアログです。

// 選択項目を定義
final String[] radioItems = new String[] { "classic", "modern", "blue", "green", "black", "special" };

AlertDialog.Builder builder = new AlertDialog.Builder(this); // ※thisはActivity自身
builder.setTitle("テーマ選択")
        .setSingleChoiceItems(radioItems, 0, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ここで選択状態を一時保存しておく
                System.out.println("selected theme => " + radioItems[which]);
            }
        })
        .setPositiveButton("OK", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ここで一時保存しておいた選択状態を正式保存する。
            }

        })
        .setNegativeButton("Cancel", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ダイアログでの変更を破棄するため、何もしない。
            }
        });

builder.show();
ほとんどチェックボックスのダイアログと同じですが、AlertDialog.Builder.setSingleChoiceItems()で項目を設定するところが異なります。

0 件のコメント:

コメントを投稿