TRY ANDROID DEV

Android アプリ開発のコーディングネタ。あとエンジニアとしての活動

RecyclerViewのAdapterについて再度復習する

背景

  • 毎回RecyclerViewを利用する時に「どうやって作るんだっけ」と悩む
  • 根本的に理解し直す必要があるので再度復習する。

構成

登場人物は以下の4つ。 f:id:off2white:20190108094926j:plain

Adapter

RecyclerViewに表示するViewを生成・管理・紐付ける役割を持つ。

表示するViewを生成するためにはfindViewByIdを呼び出す必要があるが、毎回呼び出すとコストが高い。 そのため、ViewHolderで生成したViewを保持しておき、そのViewが表示されるタイミングでBindする仕組みとなっている。

  1. getItemCount()
    まずここでアイテムの数を把握する。
    基本的にはアイテム配列を持っているだろうから、そのsizeを返すことになる。

  2. getItemViewType(position :int) : int
    ここでポジションに対するViewType()を返却する。
    0番目のポジションはヘッダーを表示したいのであれば、HEADER定数を予め設定しておき返却する形になる。

  3. onCreateViewHolder(parent: ViewGroup, viewType: Int) : RecyclerView.ViewHolder(view)
    ここで、各アイテムのViewHolderを生成する。
    ViewTypeがパラメータにあるので、それに沿ったViewHolderを返却する

  4. onBindViewHolder(holder: ViewHolder, position: Int)
    RecyclerViewに対してViewHolderが紐づいた時に呼ばれる。
    ここでViewに対してItemの情報を紐付ける。
    このタイミングでタップ時のリスナーも設定したりする。

その他よく使うもの。

  1. notifyDataSetChanged()
    データ更新時に再描画を依頼するためのメソッド。

  2. @BindingAdapter(item)
    itemをdata bindingする際に利用するAnnotation Processer

まとめ

整理してみるとそこまで複雑じゃない。 でも忘れやすいのでたまに復習しようと思う。