RecyclerViewの実装
Androidアプリ開発でよく利用されるリスト作成時のViewにRecyclerViewがあります。
RecyclerViewの基本的な使い方をまとめます。
RecyclerViewの実装方法は大きく2種類
- ネイティブ
- Groupie(ライブラリ)の使用
RecyclerViewは、Listを画面に表示させるときに使用する。Viewを使いまわす、かつ、表示されるときに生成されるので、動作のカタツキが少ない。
基本的な実装方法は、
- RecyclerViewをレイアウトファイルに配置
- RecyclerViewの1つのItemとして表示したいViewのレイアウトファイルを作成する
- RecyclerViewに対するAdapter(データ管理、Viewの作成)クラスを作成する
- RecyclerViewに対するViewHolder(RecyclerViewの1つ1つのItemのViewを生成する)クラスを作成する
- 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に劣っている点もある。
- 区切り線(境界線)は自前で準備しないといけない
- タップ時のリスナが準備されていない
ListViewにはタップ時のリスナ用にOnItemClickListener()
とsetOnItemClickListener()
が準備されている。
レイアウトファイルのDesginにItemを表示させる
レイアウトファイルのRecyclerViewの
tools:listitem
属性にItemのレイアウトファイルを指定する。