-
Notifications
You must be signed in to change notification settings - Fork 5.2k
BaseNodeAdapter
mumu edited this page Sep 8, 2025
·
1 revision
继承自
BaseQuickAdapter
你的数据类,无需再集成任何接口或者基类。保持你现在的嵌套数据结构即可。
为了直观展示,这里以json举例:
[
{
"title": "Item 1",
"childNode": [
{
"title": "Item 1.1"
},
{
"title": "Item 1.2"
}
]
},
{
"title": "Item 2",
"childNode": [
{
"title": "Item 2.1"
},
{
"title": "Item 2.2",
"childNode": [
{
"title": "Item 2.2.1"
}
]
},
{
"title": "Item 2.3"
}
]
}
]
// 需要重写以下三个方法
override fun getChildNodeList(position: Int, parent: Any): List<Any>? {
// 获取子node,没有的情况,返回null
when (parent) { // 判断数据类型
is NodeEntity -> {
// 一级
return parent.childNode
}
is NodeEntity.Level2NodeEntity -> {
// 二级
return parent.childNode
}
is NodeEntity.Level2NodeEntity.Level3NodeEntity -> {
// 三级 没有子node
return null
}
else -> return null
}
}
override fun isInitialOpen(position: Int, parent: Any): Boolean {
// 哪些数据需要默认展开
if (parent is NodeEntity) {
return parent.title == "Item 1"
}
return false
}
override fun getItemViewType(position: Int, list: List<Any>): Int {
// 获取 item 类型
val item = list[position]
when (item) {
is NodeEntity -> {
// 一级
return 1
}
is NodeEntity.Level2NodeEntity -> {
// 二级
return 2
}
is NodeEntity.Level2NodeEntity.Level3NodeEntity -> {
// 三级
return 3
}
else -> return 0
}
}