如何在对话框中设置要预先检查的按钮?

时间:2014-02-20 13:32:55

标签: android dialog checkboxlist

我想询问如何将对话框中某些项目的状态设置为预先检查。我必须遵循以下代码:

String[] typeOfTransport;

    typeOfTransport = new String[modes.length];

    final boolean[] itemsChecked = new boolean[modes.length];
    for (int i = 0; i < modes.length; i++) 
    {       
        typeOfTransport[i] = modes[i].Name;                     
    }

    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    dialogBuilder.setTitle("Select your transport:");
    dialogBuilder.setMultiChoiceItems(typeOfTransport, itemsChecked, new DialogInterface.OnMultiChoiceClickListener()
    {           
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) 
        {               
            itemsChecked[which] = isChecked = true;              
        }           
    });

    dialogBuilder.setPositiveButton("Set", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which) 
        {
            String selectetdVal = " ";
            for (int i = 0; i < modes[0].Name.length(); i++) 
            {  
               if (itemsChecked[i]) 
               {  
                 selectetdVal = selectetdVal + modes[i].Name+ " ";
                 itemsChecked[i]=false;                  
               }
            }               
            Toast.makeText(MainWindow.this, selectetdVal,Toast.LENGTH_SHORT).show();
        }

    });     

    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();
    return true;
}

我正确地获得了对话框,所有内容都已设置并准备好由用户进行检查,但是当用户调用对话框时,我希望对话框中的某些项目预先检查第一次。

1 个答案:

答案 0 :(得分:2)

帽子是setMultiChoiceItems上的第二个参数,但你基本上是在传递最近创建的一个布尔值数组(它们都是false)。

在致电true之前,请尝试将您希望预先检查的位置设为setMultiChoiceItems

您可以重复使用已经拥有的for循环来执行以下操作:

final boolean[] itemsChecked = new boolean[modes.length];
for (int i = 0; i < modes.length; i++) 
{       
    typeOfTransport[i] = modes[i].Name;  

    itemsChecked[i] = modes[i].Selected;                 
}