【问题标题】:Alert Dialog Builder wont show ArrayList警报对话框生成器不会显示 ArrayList
【发布时间】:2014-01-16 15:17:44
【问题描述】:

我有一个从数据库中检索 ArrayList 的类。我需要在警报对话框生成器中显示这些项目。但我在这方面遇到了错误。请帮忙!

这是我的错误:

错误:方法 setSingleChoiceItems(int, int, DialogInterface.OnClickListener) 类型中的 AlertDialog.Builder 是 不适用于参数 (Name[], int, new DialogInterface.OnClickListener(){})

ArrayList<Name> n_names = null;


n_names = db.getAllNames();

AlertDialog.Builder builder = new AlertDialog.Builder(Name.this);
    builder.setTitle("Choose Name");
    builder.setSingleChoiceItems(n_names.toArray(new Name[n_names.size()]), -1, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {

    }});

    builder.setPositiveButton("Ok",
     new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int id) {

    }});


    builder.setNegativeButton("Cancel",
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {


    }});
    AlertDialog alert = builder.create();
    alert.show();

【问题讨论】:

  • 你能指定什么错误?
  • 你如何在这里初始化你的 n_name ?
  • 我认为它仍然为空。
  • 错误:AlertDialog.Builder 类型中的方法 setSingleChoiceItems(int, int, DialogInterface.OnClickListener) 不适用于参数(Name[], int, new DialogInterface.OnClickListener(){})
  • 这就是我初始化 n_names 的方式。这是从数据库中检索到的。 n_names = db.getAllNames();

标签: java android arrays arraylist android-alertdialog


【解决方案1】:

我认为错误在于您正在为 setSingleChoiceItems 方法提供自定义类对象。第一个参数必须是CharSequence[]ListAdapterCursor。如果您不打算放置其中之一,则必须扩展 Dialog 类并实现您自己的 setSingleChoiceItems 方法。

---- 编辑----

在您的情况下,我建议扩展 ArrayAdapter 类,因为您有一些自定义结构要显示(在您的情况下,是 CheckBox)。为了帮助您做到这一点,您可能会看到 my answer 到一个类似的问题,还有一个 little basic explaination 关于如何扩展 ArrayAdapter 类,在这里。希望对您有所帮助!

【讨论】:

  • 但是我该怎么做呢?或者你能帮我实现一个带有复选框的列表视图吗?这样我就可以显示数组列表了?
  • 嗨!谁能帮助我如何在列表视图中显示自定义数组列表/数组适配器?这是我的代码 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, n_names); lv.setAdapter(适配器);我没有错误。但它什么也没显示。请帮忙
  • 似乎您在 ArrayAdapter 上使用的数据类型不是标准的(名称),因此 ArrayAdapter 不知道要显示什么。您应该扩展 ArrayAdapter 类并覆盖 getView() 方法以控制显示的内容(基类仅适用于标准数据类型)。
  • 刚刚做到了!谢谢NKN!
  • 不客气!如果我的回答有帮助,你应该接受它,这样其他用户也会觉得它有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-07-21
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
相关资源
最近更新 更多