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>
从膨胀视图中检索到对myListView
和空视图的引用,即
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)