java - 在 AlertDialog 中引用多个复选框

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

嘿,Android 开发人员 friend 们,我目前遇到以下代码问题。我无法找到一种方法可以轻松引用单击了哪个复选框,目前下面的代码只是一个首选项,单击时会显示带有多个复选框的 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;
                }
            });

最佳答案

使用索引有什么问题?

@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;
         ...
    }
}

看起来这应该可行,除非我缺少你想要的东西。

关于java - 在 AlertDialog 中引用多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19341466/

相关文章:

java - 如何在 android studio 中圆化对话框角

android - 显示对话框后是否可以替换 AlertDialog 的 View ?

java - 解析参数

java - Groovy:什么是 java stream anyMatch 的模拟

java - 使用java从sql排序?

java - Android Robotium 排序测试器

android - 像 facebook 中的按钮集成在 android 中

java - 无法在android中使用retrofit2发出@Post请求

两个事件之间的 Java 堆分析

android - 具有单选和多选项目的 AlertDialog