1. ホーム
  2. アンドロイド

[解決済み] [Solved] RecyclerViewで空のビューを表示する方法は?

2022-04-01 22:08:30

質問

私は、レイアウトファイルの中に、以下のような特別なビューを置くことにしています。 に記述されている ListActivity ドキュメント とする。 データがないときに表示される . このビューには、id "android:id/empty" .

<TextView
    android:id="@android:id/empty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/no_data" />

を使うとどうなるんだろう。 RecyclerView ?

解決方法は?

同じレイアウトで RecyclerView を追加します。 TextView :

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical" />

<TextView
    android:id="@+id/empty_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:visibility="gone"
    android:text="@string/no_data_available" />

onCreate を供給するデータセットがあるかどうか、 あるいは適切なコールバックでチェックします。 RecyclerView が空であることを示します。 データセットが空の場合 RecyclerView も空です。その場合、画面上にメッセージが表示されます。 そうでない場合は、その可視性を変更します。

private RecyclerView recyclerView;
private TextView emptyView;

// ...

recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
emptyView = (TextView) rootView.findViewById(R.id.empty_view);

// ...

if (dataset.isEmpty()) {
    recyclerView.setVisibility(View.GONE);
    emptyView.setVisibility(View.VISIBLE);
}
else {
    recyclerView.setVisibility(View.VISIBLE);
    emptyView.setVisibility(View.GONE);
}