Groupieと生のRecyclerViewの比較
どんな内容?
GroupieというRecyclerViewを簡単に便利に使えるライブラリを使ったので生のRecyclerViewとの比較をしました。
ソースはこちら。(開いたらついでにスターつけていってください)
環境
- Kotlin:1.3.61
- groupie:2.7.2
- アーキテクチャ:MVVM
比較の概要
- 生のRecyclerViewで必要だったファイル
- Fragment
- ListのViewModel
- ListのAdapter
- ItemのViewHolder
- ItemのViewModel
- Groupieで必要だったファイル
- Fragment
- BindableItem
- ItemのViewModel
- 生のRecyclerViewで必要だったファイル
- Fragment
- ListのViewModel
- ListのAdapter
- ItemのViewHolder
- ItemのViewModel
- Groupieで必要だったファイル
- Fragment
- BindableItem
- 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)
おわり
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentRecyclerViewBinding.inflate(inflater, container, false)
return binding.root
}
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))
}
})
}
override fun getLayout() = R.layout.recycler_item
override fun bind(viewBinding: RecyclerItemBinding, position: Int) {
viewBinding.viewModel = ItemViewModel()
viewBinding.viewModel?.item = item
}
ファイルと依存関係減るだけで超楽!!!
とりあえず使うべき!!(サポートとか不安なら貢献しよう!)
Author And Source
この問題について(Groupieと生のRecyclerViewの比較), 我々は、より多くの情報をここで見つけました https://qiita.com/kkt_yu/items/a514b3a774da1cc287c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .