RecyclerViewで一覧画面を作成する2016年04月05日(編集2016年04月30日)TweetAndroidアプリで一覧データのUI(ユーザーインターフェース)を作成する場合は、ListViewかRecyclerViewを使います。この記事は、RecyclerViewの使い方を記載した記事です。初心者向けサンプルコードhttps://github.com/java-lang-programming/Android-RecyclerView-DemoRecyclerViewとはRecyclerViewクラスは、Androidアプリで一覧画面のUIを作成する時に利用します。RecyclerViewで作成した一覧画面ListViewとの違い一覧画面のUIは、ListViewクラスを利用しても作成できます。ListViewクラスはAndroidの初期から用意されているクラスです。シンプルな一覧画面(少なめのデータの一覧表示、クリック遷移)なら、ListViewで十分に機能を満たせます。ListViewで作成した一覧画面。一方で、RecyclerViewは、一覧画面のUIで様々なアクションを利用したい場合に使います。スワイプ、ドラッグ&ドロップ、一覧の各データごとにUIを加工する場合は、RecyclerViewを利用します。RecyclerViewで作成した一覧画面。利用する機能を比較した表を示します。実装の難易度はListViewよりRecyclerViewのほうが高いです。RecyclerViewは、ListViewの仕組みを理解している前提で実装することになります。どちらを使うか迷った場合、データよりアクションに重きを置く場合は、RecyclerViewを利用するべきです。Androidアプリ開発初心者の場合は、ListViewの方がわかりやすいです。最初はListViewで一覧画面を作成し、実装に慣れてきたらRecyclerViewに移行するのが現実的な方法です。ライブラリインストールRecyclerViewを使う場合は、ライブラリをインストールする必要があります。ライブラリの導入にはgradleを使います。'com.android.support:recyclerview-v7:23.3.0'}RecycleView実際にRecyclerViewを使用してアプリのサンプルを作成していきます。Studio(1.5.1)を利用している場合は、GUIから雛形を作成できます。Fragment(List)です。Studioで自動生成されたコードでRecycleViewの説明をします。RecycleViewは、以下のクラスやインターフェースを組み合わせて作成します。viewのレイアウトを編集しますRecycleViewの定義RecyclerViewをxmlで定義します。android.support.v7.widget.RecyclerViewのタグを記述します。/>xmlで記載したtagは、java側で実体化します。false);inflateメソッドで、fragment_item_listのlayoutをviewオブジェクトとして取得します。第3引数のattachToRootは、ほとんどの場合falseにして使います。LinearLayoutManager(context));setLayoutManagerメソッドで、RecyclerViewで使うLinearLayoutManagerを設定します。LinearLayoutManagerは、縦のレイアウトを生成します。UIは、ListViewと同じ縦の一覧表示です。mListener));setAdapterメソッドで、RecyclerViewで表示するデータをviewと関連づけることができます。MyItemRecyclerViewAdapterを設定しています。MyItemRecyclerViewAdapterは、RecyclerView.Adapterを継承したクラスです。RecyclerView.Adapterの定義RecyclerViewでは、RecyclerView.Adapterを介して表示データを扱います。RecyclerView.Adapterはabstractクラスです。abstractクラスは、抽象メソッドが宣言されています。抽象メソッドは、実装なしで宣言されているメソッドのことです。メソッドは以下のとおりです。onBindViewHoldermmwメソッドを実装しないといけません。以下のように実装します。ViewHolder(view);}抽象メソッドを継承したonCreateViewHolderメソッドは、ViewHolderを返します。ViewHolderはview項目のデータを扱うクラスです。inflateで生成したviewオブジェクトをViewHolderのコンストラクタに設定します。});}抽象メソッドを継承したonBindViewHolderは、特定の位置(position)のデータを表示するためにRecyclerViewに呼ばれます。ViewHolderオブジェクトにアクセスして、データの設定やクリック処理を記述します。RecyclerView.Adapter継承クラスMyItemRecyclerViewAdapterクラスは、RecyclerView.Adapterの継承クラスです。ViewHolder>と宣言しているので、RecyclerView.ViewHolderを継承したクラスになります。RecyclerView.ViewHolderクラスもabstractクラスです。RecyclerView.ViewHolderとしてサブクラスを作成しています。コードで考えると複雑になって理解しにくいです。以下の様な図を頭にイメージすると良いと思います。実装を終えたら、ビルドしてアプリを実行します。ビルドしてアプリ立ち上げ一覧UIが表示されました。まとめRecyclerViewは、ListViewと比較すると、実装が複雑です。敬遠する人も多いとおもいます。RecyclerViewを利用する時に大切なことは、それぞれのクラスが担当しているオブジェクトや操作をイメージで掴むことです。抽象クラスやインターフェースが多いので、Javaに慣れていないと理解に時間がかかるとも思います。Androidのコーディングに慣れるには絶好のライブラリです。作れるアプリの幅も広がると思うので、是非挑戦してください。