0

我想创建一个对话框,其中包含一个具有 2 个选项的简单列表。但我还想在底部添加一个复选框条目。这是代码。

    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

你不能将两者结合起来。

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] 中使用自定义视图或使用合并适配器 [1] 并将不同的列表组合到一个适配器并使用 setAdapter 将其设置为警报对话框。

[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 回答