Groupieと生のRecyclerViewの比較


どんな内容?

GroupieというRecyclerViewを簡単に便利に使えるライブラリを使ったので生のRecyclerViewとの比較をしました。
ソースはこちら。(開いたらついでにスターつけていってください)

環境

  • Kotlin:1.3.61
  • groupie:2.7.2
  • アーキテクチャ:MVVM

比較の概要

  • 生のRecyclerViewで必要だったファイル
    1. Fragment
    2. ListのViewModel
    3. ListのAdapter
    4. ItemのViewHolder
    5. ItemのViewModel
  • Groupieで必要だったファイル
    1. Fragment
    2. BindableItem
    3. ItemのViewModel

この時点でファイル数が減ってサイコー!
しかも、それに伴ってファイルの依存関係がシンプルになってサイコー!!

Groupieのファイルでそれぞれ何をしているか

Fragment

  • もちろんxmlとの紐付け
override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = FragmentRecyclerViewBinding.inflate(inflater, container, false)
    return binding.root
}
  • BindableItemとの紐付け
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    val adapter = GroupAdapter<GroupieViewHolder>()
    binding.recyclerView.adapter = adapter
    adapter.update(mutableListOf<Group>().apply {
        ViewList().list.forEach {
            add(GroupieItem(it))
        }
    })
}

BindableItem

  • Itemのxmlとの紐付け
override fun getLayout() = R.layout.recycler_item
  • Itemのxmlとのbinding
override fun bind(viewBinding: RecyclerItemBinding, position: Int) {
    viewBinding.viewModel = ItemViewModel()
    viewBinding.viewModel?.item = item
}
  • (必要なら)クリックリスナーの設定等のアイテム個別の処理

ItemのViewModel

  • viewにbindするためのあれやこれ(普通にViewModel)

おわり

ファイルと依存関係減るだけで超楽!!!
とりあえず使うべき!!(サポートとか不安なら貢献しよう!)