我的 ListView 有两个空视图。一个是我在从数据库或服务器加载数据时显示的 ProgressBar。其他是TextView,当我出错或没有数据时显示。
我将 ListView、ProgressBar 和 TextView 放在 FrameLayout 中。并将 ProgressBar 和 TextView 的可见性设置为 Gone。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ListView
android:id="@+id/my_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<TextView
android:id="@+id/empty_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
android:text="@string/no_contacts_found"/>
<ProgressBar
android:id="@+id/empty_progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="center"
android:indeterminate="true"/>
</FrameLayout>
在从数据库或服务器加载数据之前,我将 ProgressBar 的可见性更改为 Visible,并将其设置为我的 ListView 的空视图。所以我的 ListView 开始显示 ProgressBar,指示用户数据仍在加载。
如果我收到错误或没有从数据库或服务器获得数据,我将 ProgressBar 的可见性设置为 Gone,并将 TextView 的可见性更改为 Visible。然后将 TextView 设置为我的 ListView 的空视图。