无法取消选中setMultiChoiceItems中的checkedItems

时间:2011-03-02 09:33:03

标签: android alertdialog

我正在使用一个警告对话框,其中显示了可检查项目列表。我正在使用setMultiChoiceItems填充列表,其中包含一系列已检查的项目。 这是代码:

boolean[] bChecked={false, true, true};
alertDlgEncrypt.setMultiChoiceItems(m_tabsList, tabChecked, null);

它实际上有效(在运行时检查已检查的项目),但我无法取消选中那些已检查的项目(在tabChecked选项卡中定义)。我是否必须在侦听器中手动取消选中它们(例如,此处为null)?

谢谢,

3 个答案:

答案 0 :(得分:3)

您只需要选择单击侦听器,而不是null:

setMultiChoiceItems(m_tabsList, tabChecked, new myListener() )

侦听器可以为空,只需要定义:

public class myListener implements DialogInterface.OnMultiChoiceClickListener{
    public void onClick( DialogInterface dialog, int clicked ,boolean ceva) {
    }       
}

答案 1 :(得分:0)

取消选中代码,您需要使用setItemChecked方法,如下所示:

builder.setMultiChoiceItems(filterNames, isPlayerFiltered, new DialogInterface.OnMultiChoiceClickListener(){

    public void onClick(DialogInterface dialogInterface, int i, boolean b){
    isPlayerFiltered[i] = false;
    ((AlertDialog) dialogInterface).getListView().setItemChecked(i, false);
    }
}

答案 2 :(得分:0)

Catalin和Zammbi的答案是正确的,这个问题还有另一种方法。将此方法用于侦听器参数。

    private DialogInterface.OnMultiChoiceClickListener myListener = new DialogInterface.OnMultiChoiceClickListener(){

    public void onClick(DialogInterface dialogInterface, int i, boolean b){
    ((AlertDialog) dialogInterface).getListView().setItemChecked(i, false);
    }
};