RecyclerView

RecyclerView は、コレクションを表示するためのビュー グループです。これは、ListView や GridView などの以前のビュー グループをより柔軟に置き換えるように設計されています。 このガイドでは、Xamarin.Android アプリケーションで RecyclerView を使用およびカスタマイズする方法について説明します。

RecyclerView

多くのアプリでは、同じ種類のコレクション (メッセージ、連絡先、画像、楽曲など) を表示する必要があります。多くの場合、このコレクションは大きすぎて画面に収まりません。そのため、このコレクションは、コレクション内のすべての項目をスムーズにスクロールできる小さなウィンドウに表示されます。 RecyclerView は、リストまたはグリッド内の項目のコレクションを表示する Android ウィジェットで、ユーザーがコレクションをスクロールできるようにします。 次のスクリーンショットは、電子メールの受信トレイの内容を垂直スクロール リストに表示するために RecyclerView を使用するアプリの例です。

Example app using RecyclerView to list inbox messages

RecyclerView には次の 2 つの魅力的な特長があります。

  • これは柔軟なアーキテクチャを備え、好みのコンポーネントを接続することでその動作を変更できます。

  • 項目ビューを再利用し、ビューの参照をキャッシュするために "ビュー ホルダー" を使用する必要があるため、大規模なコレクションで効率的です。

このガイドでは、Xamarin.Android アプリケーションで RecyclerView を使用する方法について説明します。また、Xamarin.Android プロジェクトに RecyclerView パッケージを追加する方法と、一般的なアプリケーションで RecyclerView がどのように機能するかについて説明します。 実際のコード例が提供されており、アプリケーションに RecyclerView を統合する方法、項目ビューのクリックを実装する方法、基になるデータが変更されたときに RecyclerView を更新する方法が示されています。 このガイドでは、Xamarin.Android 開発についてよく理解していることを前提としています。

要件

多くの場合、RecyclerView は Android 5.0 Lollipop に関連付けられていますが、これはサポート ライブラリとして提供されており、RecyclerView は API レベル 7 (Android 2.1) 以降を対象とするアプリで動作します。 Xamarin ベースのアプリケーションで RecyclerView を使用するには、次のものが必要です。

  • Xamarin.Android – Visual Studio または Visual Studio for Mac に Xamarin.Android 4.20 以降をインストールして、構成する必要があります。

  • アプリ プロジェクトには、Xamarin.Android.Support.v7.RecyclerView パッケージが含まれている必要があります。 NuGet パッケージのインストールについて詳しくは、チュートリアル: プロジェクトに NuGet を含めるのページをご覧ください。

概要

RecyclerView は、Android の ListView および GridView ウィジェットの代わりと考えることができます。 RecyclerView は以前のものと同様に、大規模なデータ セットを小さなウィンドウに表示するように設計されていますが、RecyclerView はより多くのレイアウト オプションを提供し、大きなコレクションを表示できるようにさらに最適化されています。 ListView に慣れている場合、ListViewRecyclerView には以下のようないくつかの重要な違いがあります。

  • RecyclerView を使用する方が少し複雑です。RecyclerView を使用するには、ListView と比べてより多くのコードを書く必要があります。

  • RecyclerView は定義済みのアダプターを提供していないため、データ ソースにアクセスするアダプター コードを自分で実装する必要があります。 ただし、Android には、ListViewGridView で動作する定義済みのアダプターがいくつか含まれています。

  • RecyclerView は、ユーザーが項目をタップしたときに項目クリック イベントを提供しません。代わりに、項目クリック イベントはヘルパー クラスによって処理されます。 これに対し、ListView では項目クリック イベントが提供されます。

  • RecyclerView は、ビューをリサイクルし、ビュー ホルダー パターンを適用することでパフォーマンスを向上させ、不要なレイアウト リソース検索を排除します。 ListView では、ビュー ホルダー パターンの使用はプションです。

  • RecyclerView は、カスタマイズを容易にするモジュール型の設計に基づいています。 たとえば、アプリに大幅なコード変更を加えることなく、別のレイアウト ポリシーを組み込むことができます。 これに対し、ListView は比較的モノリシックな構造です。

  • RecyclerView には、項目の追加と削除の組み込みのアニメーションが含まれています。 ListView のアニメーションには、アプリ開発者による追加の作業が必要になります。

セクション

RecyclerView のパーツと機能

このトピックでは、RecyclerView をサポートするためのヘルパー クラスとして AdapterLayoutManagerViewHolder がどのように連携するかについて説明します。 ここでは、これらの各ヘルパー クラスの概要と、それらをアプリで使用する方法について説明します。

基本的な RecyclerView の例

このトピックでは、「RecyclerView のパーツと機能」で提供される情報に基づき、さまざまな RecyclerView 要素を実装して実際の写真閲覧アプリを構築する方法を示す実際のコード例を提供します。

RecyclerView の例を拡張する

このトピックでは、「基本的な RecyclerView の例」に示されているアプリの例にさらにコードを追加して、項目クリック イベントを処理する方法と、基になるデータ ソースが変更されたときに RecyclerView を更新する方法について説明します。

まとめ

このガイドでは、Android の RecyclerView ウィジェットについて紹介しました。Xamarin.Android プロジェクトに RecyclerView サポート ライブラリを追加する方法、RecyclerView がビューをリサイクルする方法、効率化のためにビュー ホルダー パターンを適用する方法、RecyclerView を構成するさまざまなヘルパー クラスがコレクションを表示するためにどのように連携するかについて説明しました。 RecyclerView がどのようにアプリケーションに統合されるかを示すコード例を提供しました。また、異なるレイアウト マネージャーに接続することで RecyclerView のレイアウト ポリシーを調整する方法を説明し、項目クリック イベントを処理して、データ ソースの変更を RecyclerView に通知する方法について説明しました。

RecyclerView の詳細については、RecyclerView クラスのリファレンスを参照してください。