如何在警告对话框中填充包含ListView的布局?

14

我在布局中使用了自定义适配器的列表视图。现在我想把这个包含列表的布局放到我的警报对话框中。我尝试使用以下代码将不包含列表的简单布局放入警报对话框中,它能够良好地工作。但是我无法将包含列表的布局放入警报对话框中。

           AlertDialog.Builder dialog = new AlertDialog.Builder( this );
           dialog.setView( getLayoutInflater().inflate( R.layout.smill, null ) );
           dialog.setIcon(R.drawable.androidsmile);
           dialog.setInverseBackgroundForced(true);


           dialog.setTitle( "Select smiley");
           dialog.setPositiveButton( "Cancel", null );
           dialog.show();  

1
你能详细说明你的应用程序出了什么问题吗? 它是强制关闭还是ListView没有显示或其他任何问题? - Ashwin N Bhanushali
1个回答

22

你所做的只是将一个视图放入你的警报对话框中。你没有在那个列表视图上设置适配器,所以它显然不起作用(因为它是空的)。

你需要做类似以下的事情:

View view = getLayoutInflater().inflate( R.layout.smill, null);
ListView listView = (ListView) view.findViewById(R.id.listView);
YourCustomAdapter adapter = new YourCustomAdapter(parameters...);
listView.setAdapter(adapter);

AlertDialog.Builder dialog = new AlertDialog.Builder( this );
dialog.setView(view);
...
...
...
dialog.show();  

2
避免将null作为layoutInflater的根视图传递。如果在适配器内部执行此操作,则可以传递rootview或convertview或托管此警报对话框的任何视图。 - Odaym

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接