ListViewに2つの空のビューがあります。1つは、データベースまたはサーバーからデータをロードしているときに表示されるProgressBarです。もう1つは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の空のビューとして設定します。