如何在单击时禁用其他复选框(警报生成器)

时间:2011-12-04 15:59:16

标签: android alertdialog android-alertdialog

所以,我有这个代码显示MultiChoiceItem,但是这些项目还包括“始终”和“从不”选项。如果选择其中一个,则应禁用所有其他复选框(如果再次取消选中该选项,则启用)。

问题是,我如何实际访问复选框?就我而言,它们也没有ID,因此我无法使用findViewById()访问它们(或者它们?)

我用于弹出窗口的代码如下,尽管您可能不需要它。

为了形象化,我还添加了截图。因此,如果单击“始终”,则该方法应使所有其他项灰显,但保持选中状态。

谢谢!

enter image description here

private void createPopup(boolean[] selected) {
    final CharSequence[] items = getResources().getStringArray(R.array.cb_Entries);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(getString(R.string.l_active));
    builder.setMultiChoiceItems(items, selected, new OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            stateSelectedItems[which] = isChecked;
        }
    });

    builder.setPositiveButton(getString(R.string.b_okay), dialogListener);
    builder.setNegativeButton(getString(R.string.b_cancel), dialogListener);
    AlertDialog alert = builder.create();
    alert.show();
}

/ edit:所以,感谢littleFluffyKitty,我能够将复选框变灰,但它们仍然可以点击(并更改它们的值!),即使使用setClickable(false)也是如此。

这是我使用的代码:

popUpDialog.getListView().getChildAt(i).setEnabled(enable);

1 个答案:

答案 0 :(得分:0)

AlertDialog类有一个名为getListView()的方法。通过它,您可以访问包含可检查选项的ListView。从那里开始,既然知道了列表的顺序,就可以得到你想要的行,然后在它们上面设置启用(假);