如果未选中CheckBox,则禁用AlertDialog PositiveButton

时间:2015-08-23 09:31:02

标签: android button checkbox alertdialog builder

我已获得以下代码:

final AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this);
builder.setTitle(R.string.str_dbox_remove_plant_title);
final HashMap<String, Integer> stuff = myCollection.getListOfStuffWithLocation();
final CharSequence[] items = stuff.keySet().toArray(new CharSequence[stuff.size()]);
final List<Integer> indexesOfSelectedStuff = new ArrayList<Integer>();
builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        if (isChecked)
            indexesOfSelectedStuff.add(stuff.get(items[which].toString()));
        else if (indexesOfSelectedStuff.contains(stuff.get(items[which].toString())))
            indexesOfSelectedStuff.remove(which);
    }
});
builder.setPositiveButton(R.string.str_dbox_remove_stuff_ok, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        for (int i = 0; i < indexesOfSelectedStuff.size(); i++) {
            myCollection.removeStuff(i);
        }
    }
});
builder.setNegativeButton(R.string.str_dbox_remove_stuff_cancel, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});              

builder.setCancelable(false); // so as to prevent the back button from closing the dialog box
final AlertDialog alert = builder.create();
alert.setCanceledOnTouchOutside(false);                  
alert.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false); // by default, disable OK button
alert.show();

我有一个AlertDialog有一些CheckBox个es,我想禁用PositiveButton,只要没有CheckBox个。{ / p>

我有一个名为List的{​​{1}},你可以说,在某种程度上,使用indexesOfSelectedStuff方法会让我知道选择了多少size()。但是,我不确定在何处放置它或如何引用构建器中的CheckBoxes。我想将它放在PositiveButton方法(如onClick中定义)上,如下所示:

OnMultipleChoiceClickListener()

我知道我很有可能不会在那里插入它。而且我必须在创建@Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) indexesOfSelectedStuff.add(stuff.get(items[which].toString())); else if (indexesOfSelectedStuff.contains(stuff.get(items[which].toString()))) indexesOfSelectedStuff.remove(which); if (indexesOfSelectedStuff.size() == 0) { // disable button // but problem is, I don't know how to reference the POSITIVE_BUTTON } else { // enable button } } 后进行检查。但如果是这样的话,你会建议我使用什么?我在想AlertDialog但是哪个?我应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

为此,您需要创建自定义对话框。要知道如何检查此链接。 Click Here

你可以试试这个。

创建一个布尔值为true。 如果勾选复选框,则设置布尔值true false。

然后,只要您创建警报对话框,只需检查布尔值是否设置为false或true。如果为true,则创建“是”按钮,否则不要创建“是”按钮。 现在问题是检查按钮在alertdialog里面,如果是的话我是对的。

每次单击一个复选按钮,您都可以关闭“警报”对话框并再次打开它,并勾选勾选的复选框,并且不显示“是”按钮。这是使用引用的按钮来设置禁用。或者以技术术语z

当然这是滞后等等,但这就是我所能做的。遗憾