MultiType开源项目源码分析
![](https://filescdn.proginn.com/8e31f1fe092b62cf14a21c25660eb9f2/387e13bc8b8ed69c7abb50bd90f9c69e.webp)
PS:前两天有事,路过大学特意进去看了一下,熟悉的场景不熟悉的人,时隔几年,再也回不去了。
https://github.com/drakeet/MultiType
MultiTypeAdapter的使用
MultiTypeAdapter的register过程
MultiTypeAdapter的ViewHolder和数据填充
MultiTypeAdapter的使用
1// base
2adapter.register(TextItemViewDelegate())
3adapter.register(ImageItemViewDelegate())
4adapter.register(RichItemViewDelegate())
5// One to many
6adapter.register(Data::class).to(
7 DataType1ViewDelegate(),
8 DataType2ViewDelegate()
9).withKotlinClassLinker { _, data ->
10 when (data.type) {
11 Data.TYPE_2 -> DataType2ViewDelegate::class
12 else -> DataType1ViewDelegate::class
13 }
14}
15adapter.items = items
16recyclerView.adapter = adapter
17adapter.notifyDataSetChanged()
MultiTypeAdapter的register过程
![](https://filescdn.proginn.com/ee962c3fce2c6a047d83d7aff9d59ee0/85a7a1366c6da3b08ce92e5a9cb4d4fd.webp)
![](https://filescdn.proginn.com/6f6747d9d8733937bef13e65bd41490b/477c7d3979dd1d73ad27f6bb483d65e9.webp)
MultiTypeAdapter的ViewHolder和数据填充
getItemViewType
![](https://filescdn.proginn.com/e7928580d627579cb6476ddbd21ca28f/e2c0b045fbbf2789355a0c8ce88b1f7d.webp)
onCreateViewHolder
![](https://filescdn.proginn.com/fdcd26cfe5253c57dd5eaf96a8eb30eb/b471af6355f188f922654c1520868734.webp)
总结
评论