Androidアプリ開発でよく利用されるリスト作成時のViewにRecyclerViewがあります。
RecyclerViewの基本的な使い方をまとめます。
RecyclerViewの実装方法は大きく2種類
- ネイティブ
![](https://it-tech-hack.com/wp-content/uploads/cocoon-resources/blog-card-cache/7d1534ca28dbc9acc40b905a3c4b2a64.png)
RecyclerView で動的リストを作成する | Android デベロッパー | Android Developers
- Groupie(ライブラリ)の使用
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Fadvent-calendar-ogp-background-f625e957b80c4bd8dd47b724be996090.jpg?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UmVjeWNsZXJWaWV3JUUzJTgxJUFCJUUzJTgyJTg4JUUzJTgyJThCJUUzJTgzJUFDJUUzJTgyJUE0JUUzJTgyJUEyJUUzJTgyJUE2JUUzJTgzJTg4JUUzJTgyJTkyJUU2JUE1JUJEJUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCR3JvdXBpZSVFMyU4MiU5MjElRTUlQjklQjQlRTQlQkQlQkYlRTMlODElQTMlRTMlODElQTYlRTMlODElQkYlRTMlODElQTYmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ21pZGRsZSZzPTdjZDdmZDA5OGFhOWI5YjRmMTU0YTg1NWYzMTA4ZDAx&mark-x=142&mark-y=151&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwdGFrYWhpcm9tJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xYmY0NmIwZjQzN2IyMjgwMzViNTUyNjNiNTdhNzdjNw&blend-x=142&blend-y=491&blend-mode=normal&s=a721161ccd820e27ca0b82f932934d62)
RecyclerViewによるレイアウトを楽にするGroupieを1年使ってみて - Qiita
Groupie1年間Groupieをたくさん使ったので、その知見を書いておこうと思います。Groupieは簡単に複雑なRecyclerViewによる画面レイアウトを行うことができます。どう簡単…
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()
が準備されています。
![](https://www18.a8.net/0.gif?a8mat=3T01CK+1AFTYQ+529E+5ZMCH)