所以,我有这个代码显示MultiChoiceItem
,但是这些项目还包括“始终”和“从不”选项。如果选择其中一个,则应禁用所有其他复选框(如果再次取消选中该选项,则启用)。
问题是,我如何实际访问复选框?就我而言,它们也没有ID,因此我无法使用findViewById()
访问它们(或者它们?)
我用于弹出窗口的代码如下,尽管您可能不需要它。
为了形象化,我还添加了截图。因此,如果单击“始终”,则该方法应使所有其他项灰显,但保持选中状态。
谢谢!
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);
答案 0 :(得分:0)
AlertDialog类有一个名为getListView()的方法。通过它,您可以访问包含可检查选项的ListView。从那里开始,既然知道了列表的顺序,就可以得到你想要的行,然后在它们上面设置启用(假);