Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AlertDialog MultiChoiceItems侦听器问题_Android_Android 1.5 Cupcake - Fatal编程技术网

Android AlertDialog MultiChoiceItems侦听器问题

Android AlertDialog MultiChoiceItems侦听器问题,android,android-1.5-cupcake,Android,Android 1.5 Cupcake,我目前正在使用AlertDialog.builder为用户创建多选项列表(复选框)。这非常有效,只是我们希望其中一个按钮取消选择列表中的所有其他按钮 builder.setMultiChoiceItems(list, checked, new DialogInterface.OnMultiChoiceClickListener() { public void onClick(DialogInterface dialog, int item, boolean isChecked

我目前正在使用AlertDialog.builder为用户创建多选项列表(复选框)。这非常有效,只是我们希望其中一个按钮取消选择列表中的所有其他按钮

builder.setMultiChoiceItems(list, checked,
  new DialogInterface.OnMultiChoiceClickListener() {
   public void onClick(DialogInterface dialog,
     int item, boolean isChecked) {

    if(item == ANY_ITEM_BUT_0)
    {

     ((AlertDialog) dialog).getListView().setItemChecked(0, false);

    }
   }
  });
当使用“true”时,它将成功选中该框,但当使用false时,它不会取消选中该框(除非我已手动将其设置为true)。是否应该使用单独的侦听器来检测用户何时单击这些?在我看来,有两个复选标记集,一个是通过“setItemChecked(0,true);”设置的,另一个是通过实际选择它设置的


这已经让我抓狂了好几天了,如果有任何帮助,我将不胜感激。

不要认为您可以更改列表中的值,因为列表项(复选框)由生成器对象控制。但是,当单击第一个项目时,您可以简单地使对话框重新启动。。。通过取消显示的对话框,并创建一个新对话框……

取消选择其他项目,它可以正常工作:

if(item == ANY_ITEM_BUT_0){    
   for(int i=0; i<items.length;i++){  
            if (item != ANY_ITEM_BUT_0)                             
           ((AlertDialog)dialog).getListView().setItemChecked(i, false);
    }
}
if(item==ANY_item_但_0){

对于(inti=0;iOH!!!我忘记了确保取消选择您必须将checked更改为null;),我也遇到了同样的问题

    builder.setMultiChoiceItems(list, null, new DialogInterface.OnMultiChoiceClickListener() {
...

如果要将复选框设置为不选中,并且需要在调用
setMultiChoiceItems()
时设置
checkedItems
数组,则还需要将选中的数组项设置为false。确保选中的数组是最终数组,以便可以在侦听器中访问它

builder.setMultiChoiceItems(list, checked,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog,
 int item, boolean isChecked) {

if(isChecked && item == ANY_ITEM_BUT_0)
{
   for(int i=0; i<list.length;i++){  
      if (i != ANY_ITEM_BUT_0) {   
       checked[i] = false;                          
       ((AlertDialog)dialog).getListView().setItemChecked(i, false);
        } 
     }
   }
  }
});
builder.setMultiChoiceItems(列表,选中,
新的DialogInterface.OnMultiChoiceClickListener(){
公共void onClick(对话框接口对话框,
int项,布尔值已检查){
如果(isChecked&&item==除0之外的任何项目)
{

对于(int i=0;iYou为我节省了很多时间:)谢谢!我将所有项目设置为false,但似乎我只需要null!