IT情報あれこれ

IT系の情報を雑多に

RecyclerViewの実装

Androidアプリ開発でよく利用されるリスト作成時のViewにRecyclerViewがあります。

RecyclerViewの基本的な使い方をまとめます。

 

RecyclerViewの実装方法は大きく2種類

  • ネイティブ

developer.android.com

  • Groupie(ライブラリ)の使用

qiita.com

RecyclerViewは、Listを画面に表示させるときに使用する。Viewを使いまわす、かつ、表示されるときに生成されるので、動作のカタツキが少ない。

基本的な実装方法は、

  1. RecyclerViewをレイアウトファイルに配置
  2. RecyclerViewの1つのItemとして表示したいViewのレイアウトファイルを作成する
  3. RecyclerViewに対するAdapter(データ管理、Viewの作成)クラスを作成する
  4. RecyclerViewに対するViewHolder(RecyclerViewの1つ1つのItemのViewを生成する)クラスを作成する
  5. RecyclerViewをActivity(Fragment)から参照し、adapterに3で作成したadapterをセットする。layoutManagerをセットする。

RecyclerViewの使用例

  • 2行のリストを作成したい

LayoutManagerにGridLayoutMangaerを使用する。

Spanに行数を指定する。2行の場合は、2を指定する。

  • 複数種類のレイアウトをリスト内に表示させたい

ViewTypeで条件分岐させる。

getItemViewType()をAdapterクラスでoverrideし、onCreateViewHolderに渡すViewTypeを返すようにする。

  • リストに境界線を表示させたい

RecyclerViewインスタンス

addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL))を呼ぶ。

  • リストのItem間にマージンを設けたい

ItemDecorationクラスを継承した自作のDecorationクラスを作成し、

getItemOffsets()をoverrideすることで、上下左右のマージンを指定する。

ただし、マージンの単位はpxなので注意。

ListViewとの比較

RecyclerViewはListViewよりもより自由なレイアウトを作成できる特徴がある一方で、

ListViewに劣っている点もある。

  1. 区切り線(境界線)は自前で準備しないといけない
  2. タップ時のリスナが準備されていない

ListViewにはタップ時のリスナ用にOnItemClickListener()setOnItemClickListener()が準備されている。

レイアウトファイルのDesginにItemを表示させる

レイアウトファイルのRecyclerViewの

tools:listitem 属性にItemのレイアウトファイルを指定する。