【问题标题】:AlertDialog MultiChoiceItems Listener problemsAlertDialog MultiChoiceItems 侦听器问题
【发布时间】:2009-10-28 23:29:37
【问题描述】:

我目前正在使用 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);”,一个是实际选择它。

这几天让我发疯了,任何帮助将不胜感激。

【问题讨论】:

    标签: android android-1.5-cupcake


    【解决方案1】:

    哦!!!我忘记了它以确保取消选择您必须将检查更改为 null ;),我遇到了同样的问题。

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

    【讨论】:

    • 您为我节省了很多时间 :) 谢谢!我将所有项目设置为 false,但似乎我只需要 null!
    【解决方案2】:

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

    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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      不要认为您可以更改列表中的值,因为列表项(复选框)由构建器对象控制。但是,您可以简单地在单击第一项时重新启动对话框......通过关闭正在显示的对话框,然后创建一个新的......

      【讨论】:

        【解决方案4】:

        如果你想设置一个复选框不被选中并且你需要在调用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);
                } 
             }
           }
          }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-27
          • 2012-10-09
          • 1970-01-01
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多