[Android] RecyclerView の基本的な設定

Android7 

RecyclerView は、ListView をさらに進化させて柔軟にしたものだそうです。
cellをドラッグ&ドロップさせたり追加・消去などに強みを発揮するようですが、ここでは簡単な基本設定を試してみます。
 

Android Studio 2.2.2
Android 7.1.1

 


RecyclerView

 
わかりやすい説明がGoogle Developerのリストとカードの作成にあります。ここではそれにあるサンプルコードを元にして実際に動かしてみたいと思います。

 

 
基本的にはListViewの進化形なので、ListViewがわかっていることが前提です。

LayoutManagerはアイテムの位置調整を行い、 ビューの再利用(Recycle)する機能をもっているそうですが、ListViewでもconvertViewを駆使すればできていた事でしたが、あえて記述しなくても良くなったということでしょうか。
 
レイアウトのサンプルコードをLinearLayoutに入れました。
activity_main.xml

 
RecyclerView オブジェクトのハンドルを取得してレイアウト マネージャーに接続し、アダプターにデータセットを渡します。
データセットとして20個の要素を持つ配列で設定してみます。
MainActivity.java

 
Adapterですが、別ファイルとして作成しましたので、元の例と異なる箇所がでてきます。
MyAdapter.java

 
cellとなる部分はListViewと同じように要素のレイアウトで作ります
my_text_view.xml

 
ここで注意するところは、layout_heightを限定しないとセルの高さがとんでもなく広がってしまうことがあります。
 
ここまで来てもまだエラーが残っていると思いますがライブラリーを追加しないといけません
com.android.support:recyclerview-v7
なお、このバージョンはビルドツールのバージョンと合っていないとエラーになることもありますので、それぞれの環境で調整してください。
build.gradle

 
これでリストがスクロールするRecyclerViewの簡単な例ができたと思います。
 

 
しかし、これは境界ラインも無いしカスタマイズで作り込む必要があります。
逆にいうとListViewのカスタマイズには限界があったところを柔軟に拡張したということでしょうか。

 

RecyclerViewで画像とテキストのリストを作成

 
いままでの例を元に、画像と文字列を組み合わせた構成されるcellを作ってみたいと思います。
また、データセットも追加・削除・移動を前提にするためArrayListを使います。
また双方向連結リストのLinkedListを使用すれば削除・追加などが早くなるようです。
 
MainActivity.java

 
MyAdapter.java

 
activity_main.xml

 
cellのレイアウトは色々と設定しました
my_text_view.xml

 
バージョンなどは自分の環境に合わせてください
build.gradle

 
少しはましになったでしょうか
 
 
関連ページ:

Reference: