带有ArrayAdapter的AlertDialog未显示项目列表

时间:2013-07-30 14:50:41

标签: android android-alertdialog

我想创建一个显示自定义对象AlertDialog列表的Supplier。已覆盖toString()方法以显示说明。

AlertDialog.Builder dialog = new AlertDialog.Builder(ExampleActivity.this);
dialog.setTitle("Title");
dialog.setMessage("Message:");

final ArrayAdapter<Supplier> adapter = new ArrayAdapter<Supplier>(
        ExampleActivity.this, android.R.layout.select_dialog_singlechoice);

adapter.add(new Supplier());
adapter.add(new Supplier());
adapter.add(new Supplier());

dialog.setAdapter(adapter, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
});
dialog.setNegativeButton("Cancel", null);
dialog.show();

从我看过的例子中,我找不到任何明显错误的代码。但是,当我运行它时,它不会按预期显示供应商对象的列表。我还尝试对setItems使用setSingleChoiceItemsAlertDialog.Builder方法。任何人都可以看到我错在哪里?

2 个答案:

答案 0 :(得分:9)

事实证明,您无法一起设置消息和适配器。当我删除dialog.setMessage("Message:")时,它会起作用。

答案 1 :(得分:1)

你可以用这个:

AlertDialog.Builder builderSingle = new AlertDialog.Builder(context);
builderSingle.setIcon(R.drawable.logobig);
builderSingle.setTitle("");

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
  context, android.R.layout.simple_list_item_1
);

arrayAdapter.add("Customer 1 ");
arrayAdapter.add("Customer 2");

builderSingle.setAdapter(arrayAdapter, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    switch (which) {
      case 0:
        // handle item1
      break;
      case 1:
        // item2
      break;
      case 2:
        // item3
      break;
      default:
      break;
    }
  }
});

builderSingle.show();