LoginSignup
0
0

More than 3 years have passed since last update.

Groupieと生のRecyclerViewの比較

Posted at

どんな内容?

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

環境

  • 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)

おわり

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0