constval ONE =1;constval TWO =2;constval THREE =3;dataclassTreeOne(var label: String,var id: String
): AbstractExpandableItem<TreeTwo>(),MultiItemEntity {overridefungetItemType(): Int {return ONE;}overridefungetLevel(): Int {return ONE;}}dataclassTreeTwo(var label: String,var id: String
): AbstractExpandableItem<TreeThree>(), MultiItemEntity {var treeOne:TreeOne?=nullset(value){
field= value
}get()= field
overridefungetItemType(): Int {return TWO;}overridefungetLevel(): Int {return TWO;}}dataclassTreeThree(var label: String,var id: String
): MultiItemEntity {var treeTwo:TreeTwo?=nullset(value){
field= value
}get()= field
overridefungetItemType(): Int {return THREE
}}
写adapter
classTreeAdapter(data: MutableList<MultiItemEntity>?):
BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder>(data){init{addItemType(ONE, R.layout.level_one)addItemType(TWO, R.layout.level_two)addItemType(THREE, R.layout.level_three)}overridefunconvert(holder: BaseViewHolder?, item: MultiItemEntity?){when(item?.itemType){
ONE ->{val treeOne = item as TreeOne
holder?.setText(R.id.label, treeOne.label)
holder?.itemView?.setOnClickListener{val adapterPosition = holder.adapterPosition
if(treeOne.isExpanded){collapse(adapterPosition)}else{expand(adapterPosition)}}}
TWO ->{val treeTwo = item as TreeTwo
holder?.setText(R.id.label, treeTwo.label)
holder?.itemView?.setOnClickListener{val adapterPosition = holder.adapterPosition
if(treeTwo.isExpanded){collapse(adapterPosition)}else{expand(adapterPosition)}}}
THREE ->{val TreeThree = item as TreeThree
holder?.setText(R.id.label, TreeThree.label)}}}}
使用BaseRecyclerViewAdapterHelper实现树形结构成品图先依赖数据bean写adapter在界面中使用成品图先依赖 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30数据beanconst val ONE = 1;const val TWO = 2;const val THREE = 3;data class TreeOne( var label: String,