我正在使用一个警告对话框,其中显示了可检查项目列表。我正在使用setMultiChoiceItems填充列表,其中包含一系列已检查的项目。 这是代码:
boolean[] bChecked={false, true, true};
alertDlgEncrypt.setMultiChoiceItems(m_tabsList, tabChecked, null);
它实际上有效(在运行时检查已检查的项目),但我无法取消选中那些已检查的项目(在tabChecked选项卡中定义)。我是否必须在侦听器中手动取消选中它们(例如,此处为null)?
谢谢,
答案 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);
}
};