2

我正在尝试将该setEmptyView()方法用于ListView通过该AlertDialog builder方法创建的 a 。由于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);

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

4

1 回答 1

1

所以我不确定是否可以在使用构建器的方法在构建器SetEmptyView中设置适配器之后进行设置。AlertDialogsetAdapter

但是,我通过在同一个 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(如创建自定义布局下的文档中所述),即

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方法提供了更大的灵活性。

于 2013-10-29T18:31:35.003 回答