我正在尝试将setEmptyView()
方法用于通过ListView
AlertDialog
方法创建的builder
。由于ListView
是由builder
创建的,因此我认为我应该能够对视图进行充气,例如my_empty_view.xml
,并获取对话框ListView
的实例并设置相应的空视图,即
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);
虽然这不会引发任何错误,但是当适配器为空时它不会给出空视图。关于我做错了什么的想法?
答案 0 :(得分:0)
因此,在使用构建器的SetEmptyView
方法在AlertDialog
构建器中设置适配器后,我不确定是否可以设置setAdapter
。
但是,我通过在同一个xml文件中定义ListView
和我的空视图(例如TextView
且可见性设置为已消失)来解决此问题,例如,
<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>
我在我的扩展OnCreateDialog
类的DialogFragment
方法中夸大了此视图组(如创建自定义布局下的documentation中所述),即,
View myDialogView = inflater.inflate(R.layout.my_dialog_view, null);
从膨胀的视图中检索对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文档抛出,它建议使用setAdapter
构建器中的AlertDialog
方法。就个人而言,我认为坚持使用setView
方法可以提供更大的灵活性。