如何从以下获得一棵树
文件夹结构
name | folderId | parentId
test 1 | 1 | 2
test 2 | 2 | 0 //значит это корневой уровень
name 3 | 3 | 0 //значит это корневой уровень
name 4 | 4 | 1
name 5 | 5 | 1
对象结构
name | folderId
object 1 | 1
object 2 | 2
object 3 | 3
object 4 | 3
object 5 | 3
我明白了
val folders = listOf(table1)
val objects = listOf(table2)
从这里你需要得到List<TreeItem>
test 2 -> {
test 1 -> {
name 4
name 5
}
object 1
}
name 3 -> {
object 3
object 4
object 5
}
数据模型
sealed class TreeItem {
class Folder(val folderInfo: TreeFolder, val childs: List<TreeItem>) : TreeItem()
class Object(val item: Object) : TreeItem()
}
data class TreeFolder(val name: String, folderId: Long, parentId: Long)
data class Object(val name: String, folderId: Long)
这就是我得到树的方式
创建一个结构
HashMap<String, TreeItem>,其中键是文件夹 ID,值是文件夹对象接下来,在其中添加所有文件夹。之后,循环遍历每个对象:
据
List<TreeItem>我了解,根部的元素应该包含,你可以从一开始就声明这个对象,如果元素没有父级,那么在这里添加它。结果应该是这样的
TreeItem- 它必须是一个具有值的结构:节点的值,到父节点和子节点的链接TreeItemInfo- 粗略地说,这是一个内容对象,您可以通过它获取父 ID 的信息,通过它的值可以创建一个 TreeItem 节点