0

2 つの選択肢を持つ単純なリストを含むダイアログ ボックスを作成したいと考えています。ただし、下部に 1 つのチェック ボックス エントリを追加することも必要です。これがコードです。

    final String s1 = "item 1";
    final String s2 = "item 2";
    final CharSequence[] items = { s1, s2 };

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

if (items[item].toString().equalsIgnoreCase(s1)) {
                item1selected();

            } else if (items[item].toString().equalsIgnoreCase(s2)) {
                item2selected();
            }
        }
    }).create();
    builder.setMultiChoiceItems(R.array.select_dialog_item,
                    new boolean[]{false},
                    new DialogInterface.OnMultiChoiceClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton,
                                boolean isChecked) {

                            preferences.edit().putBoolean(getString(R.string.pref_entry), isChecked).commit();
                        }
                    }).create();
builder.show();

ここでは、チェックボックス項目のみが表示されています。

4

1 に答える 1

0

2つを組み合わせることはできません。

setMultiChoiceItemsは次のように定義されます。

public Builder setMultiChoiceItems(int itemsId, boolean[] checkedItems, 
            final OnMultiChoiceClickListener listener) {
        P.mItems = P.mContext.getResources().getTextArray(itemsId);
        P.mOnCheckboxClickListener = listener;
        P.mCheckedItems = checkedItems;
        P.mIsMultiChoice = true;
        return this;
    }

以前に設定した項目をリセットします。

public Builder setItems(CharSequence[] items, final OnClickListener listener) {
        P.mItems = items;
        P.mOnClickListener = listener;
        return this;
    }

試行していることを実行する方法は、ダイアログ[1]でカスタムビューを使用するか、mergeadapter [1]を使用し、さまざまなリストを1つのアダプターに結合し、setAdapterを使用してalertdialogに設定することです。

[1] http://developer.android.com/reference/android/app/AlertDialog.html#setView(android.view.View、int、int、int、int

[2] https://github.com/commonsguy/cwac-merge

于 2012-04-09T13:51:13.120 に答える