Android 从AlertDialog创建的ListView的setEmptyView

Android 从AlertDialog创建的ListView的setEmptyView,android,listview,dialog,android-alertdialog,Android,Listview,Dialog,Android Alertdialog,我正在尝试使用setEmptyView()方法创建一个通过AlertDialogbuilder方法创建的ListView。由于列表视图是由生成器创建的,因此我认为我应该能够膨胀视图,例如my_empty_view.xml,并获取对话框的列表视图的实例,并相应地设置空视图,即 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View myEmptyVi

我正在尝试使用
setEmptyView()
方法创建一个通过
AlertDialog
builder
方法创建的
ListView
。由于
列表视图
是由
生成器
创建的,因此我认为我应该能够膨胀视图,例如
my_empty_view.xml
,并获取对话框的
列表视图
的实例,并相应地设置空视图,即

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
View myEmptyView = inflater.inflate(R.layout.my_empty_view.xml, null);

// Alert Dialog Code Here
dialog = builder.create();
ListView listView = dialog.getListView();
listView.setEmptyView(myEmptyView);

虽然这不会引发任何错误,但当适配器为空时,它不会给出空视图。有没有关于我做错了什么的想法?

因此,我不确定在
警报对话框
builder中使用builder的
setAdapter
方法设置适配器后是否可以设置
SetEmptyView

但是,我通过在同一个xml文件中定义
列表视图
和我的空视图(例如可见性设置为gone的
文本视图
)来解决这个问题,例如

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">

<ListView
    android:id="@+id/my_list_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:choiceMode="multipleChoice"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"/>


    <TextView
        android:id="@+id/my_empty_view"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="Searching for devices..."
        android:layout_gravity="center"
        android:textSize="16sp"
        android:paddingTop="50dp"
        android:paddingBottom="50dp"
        android:visibility="gone"/>


</LinearLayout>
从膨胀视图中检索到对my
ListView
和空视图的引用,即

ListView myListView = (ListView) myDialogView.findViewById(R.id.my_list_view);
TextView myEmptyView = (TextView) myDialogView.findViewById(R.id.my_empty_view);
使用这些设置列表视图
setemptyView
,即

myListView.setEmptyView(myEmptyView);
设置我的适配器

myListView.setAdapter(yourAdapter);
然后在构建器中简单地使用
setView()
方法

.setView(myDialogView)
这可能是最好的办法。android文档建议使用
AlertDialog
builder中的
setAdapter
方法,这让我很惊讶。就我个人而言,我认为坚持使用
setView
方法可以提供更大的灵活性

.setView(myDialogView)