9

我一直在尝试获取一个包含大约 10-12 个项目的列表,每个项目在警报对话框上都有一个复选框(即当我的活动开始时)。到目前为止,我已经想出了以下代码;它没有复选框。
那么,我该如何实现呢?任何示例代码或建议将不胜感激。
谢谢

final CharSequence[] items = {"cat1","cat2","cat3" };
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle("Categories");
          builder.setItems(items, new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int item) {
            switch (item) {
            case 0:
             //handle item1
             break;
            case 1:
             //item2
             break;
            case 2:
             //item3
             break;
            default:
             break;
            }  }
          });
          AlertDialog alert = builder.create();
          alert.show();
4

3 回答 3

5

您必须在构建器对象中设置 setSingleChoiceItems() 方法,而不是像下面这样的 setItems。

 builder.setSingleChoiceItems(items , -1,
                      new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int which) {
               // The 'which' argument contains the index position
               // of the selected item
           }
    })

如果要显示多选列表对话框,则必须在其参数中使用 DialogInterface.OnMultiChoiceClickListener 设置 setMultiChoiceItems() 而不是 setSingleChoiceItems

Developer.Android.com 中提到了所有内容,您可以在此处查找对话框帮助

于 2012-12-19T09:07:48.387 回答
1

我建议不要在警报对话框中使用复杂的自定义视图。为此,更好地使用开始活动作为结果。在清单中为您的对话活动设置 android:theme="@style/Theme.Dialog"

于 2012-12-19T08:47:54.320 回答
0

正如 rajpara 所说,但我不会忘记通过将开关替换为 items[which].toString(); 来减少代码的复杂性。

于 2016-12-13T22:08:39.450 回答