【问题标题】:AlertDialog with ListView adapter带有 ListView 适配器的 AlertDialog
【发布时间】:2018-02-12 15:30:44
【问题描述】:

我尝试用 ListView(适配器)做 AlertDialog,我得到了 Alert Dialog 但我没有得到 ListView,所以我的代码是:

    public void namesDialog(View view){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.list_view_names_dialog, null);
    builder.setTitle("Names:");
    builder.setView(v);
    final ListAdapterDetailsNames adapter = new ListAdapterDetailsNames(this, mNames.getNames());
    mListViewTextNames.setAdapter(adapter);
    AlertDialog dialog = builder.create();
    dialog.show();

}

我应该怎么做才能在 AlertDialog 中获取 listView?

非常感谢您的帮助:)

【问题讨论】:

  • 您的列表视图为空。所以你看不到任何项目。
  • 您对 mListViewTextNames 的意图是什么?如果是 ListView 那为什么不使用那个呢?
  • @greenapps mListViewTextNames 这是 ListView..我应该怎么做才能修复它?
  • 我已经告诉过你了:builder.setView(mListViewTextNames);
  • @greenapps 我这样做了,但不起作用..

标签: android android-alertdialog listadapter listview-adapter


【解决方案1】:

mListViewTextNames 是什么?您正在将适配器设置为一个视图,该视图甚至在您膨胀 R.layout.list_view_names_dialog 之前就已经存在......您几乎肯定需要在膨胀视图中使用 findViewById() 才能获得正确的 ListView 来设置适配器。

【讨论】:

  • mListViewTextName 是一个 ListView,所以我尝试从布局中获取 ListView:list_view_names_dialog
  • @Ei123456 但是,您是否看到在您发布的代码中没有提及 finding mListViewTextNames?您不厌其烦地在R.layout.list_view_names_dialog 上调用inflate(),这是您的对话框的主体视图,但是由于您实际上并没有从该主体视图 获得对ListView 的引用,因此您必须是在对话框中没有的一些 other ListView 上设置适配器。
  • 好的,现在我明白了,它工作正常!谢谢@Ben P。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多