在AlertDialog中引用多个Checkbox

时间:2013-10-13 03:12:16

标签: java android android-alertdialog android-preferences android-checkbox

嗨其他Android开发者,我现在有一个问题,下面的代码。我无法找到一种方法可以轻松引用单击的Checkbox,目前下面的代码只是一个Preference,当单击时,会显示一个带有多个Checkbox的AlertDialog。

目标是在选中复选框时执行某些特定操作,但是我想对每个项目执行不同的操作。

代码

Preference checkboxalert = (Preference) findPreference("checkboxalert");
           checkboxalert
            .setOnPreferenceClickListener(new OnPreferenceClickListener() {

        final CharSequence[] items = {" Easy "," Medium "," Hard "," Very Hard "};
        final ArrayList<Integer> selectedItems=new ArrayList<Integer>();

        public boolean onPreferenceClick(Preference preference) {
               AlertDialog.Builder builder = new AlertDialog.Builder(context);
                 builder.setTitle("Select The Difficulty Level");
                 builder.setMultiChoiceItems(items, null,
                   new DialogInterface.OnMultiChoiceClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int indexSelected,
                                 boolean isChecked) {
                        if (isChecked) { 
                            //WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED

                            selectedItems.add(indexSelected);
                            Log.i("Preference - Checkbox", "Something was clicked");

                             } else if (selectedItems.contains(indexSelected)) { 
                                 selectedItems.remove(Integer.valueOf(indexSelected));
                             }
                         }
                     })
                     .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialog, int id) {
                         }
                     })
                     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                         @Override
                         public void onClick(DialogInterface dialog, int id) {
                         }
                     });
                        dialog = builder.create();
                        dialog.show();

                return true;
                }
            });

1 个答案:

答案 0 :(得分:1)

使用index

有什么问题
@Override
public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked) 
{
    if (isChecked) { 
     selectedItems.add(indexSelected);

    //WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED
    switch (indexSelected)
    {
         case 0:
            // do something if the first box is checked
            break;
         case 1:
            // do something if the second box is checked
            break;
         ...
    }
}

除非我想念你想要的东西,否则这似乎应该有效。