Skip to main content

AndroidでRecyclerViewのConcatAdapterを使ってみた

androidx.recyclerview:recyclerview:1.2.0からConcatAdapterが導入された
https://developer.android.com/jetpack/androidx/releases/recyclerview?hl=ja
今回試しに使ってみた


・RecyclerViewの今までとこれから
RecyclerViewの中で違うレイアウトを混ぜて表示したいときはgetItemViewType使って出し分けしてた
https://firespeed.org/diary.php?diary=kenz-1899

ヘッダーとフッターのような場合については、ConcatAdapaterが使えるようになった
このQiitaが分かりやすいので写経するならこれが良いと思う
https://qiita.com/kaleidot725/items/0729605ffda249071bb7

 

・ListAdapter
今まではRecyclerView.Adapterを使ってたけど
ListAdapterというAdapterもある。
こちらはRecyclerView.Adapterを継承してる
DIFF_UTILを渡して差分更新がしやすそうだし、listの更新はsubmitListだけだなので楽勝な予感
https://developer.android.com/reference/androidx/recyclerview/widget/ListAdapter

submitList(List<T> list)
//Submits a new list to be diffed, and displayed.

非同期でデータ更新してみたら自動で反映された
dispatch叩かなくて良いんだね

GlobalScope.launch {
    delay(2000L)
    categoryAdapter.submitList(listOf(Category("人名1")))
}

 

・viewBinding
databindingばっかり使ってったけどviewBindingってのもあるんだね
https://qiita.com/mi_iroha/items/dbc07737e81776e05f8d

android {
    viewBinding {
        enabled = true
    }
}

 

こうして新しいConcatAdapterを使えましたとさ

関連記事:

Pocket