dingyi222666 / TreeView

An Android TreeView with RecyclerView
Apache License 2.0
105 stars 9 forks source link

刷新方式 #11

Closed zhengyu-android closed 1 year ago

zhengyu-android commented 1 year ago

当我使用 lifecycleScope.launch { binding.treeView.refresh() } 这个是怎么做到单个node刷新的,并且我如果两个node改变了,为什么不能一起刷新掉

dingyi222666 commented 1 year ago

可以看这里,第二个参数传 node 就行。

多个 node 改变的话我觉得可以找到这两个 node 的共同父 node,然后直接刷新这个父 node。

zhengyu-android commented 1 year ago

如果TreeView所有的数据都需要换掉,该如何操作呢,目前我是item替换了所有的数据,然后使用 lifecycleScope.launch { binding.treeView.refresh(true, binding.treeView.tree.rootNode) } 并无效果

dingyi222666 commented 1 year ago

你这里第一个参数应该是传 false 哦,传 ture 的话还是从缓存里拿数据的。

zhengyu-android commented 1 year ago

lifecycleScope.launch { binding.treeView.refresh(false, binding.treeView.tree.rootNode) } 并不能刷新当前treeview,我目前的需求是存储当前的树结构,所以使用了item转json存储起来,然后需要的时候取出来转成item的格式,在刷新treeview,但目前的treeview并不能实现

dingyi222666 commented 1 year ago

是用的 TreeNodeGenerator 吗?

我看了一下,好像是在 TreeView#refresh 里直接调用的这句

tree.refreshWithChild(node, withExpandable = true)

这个意思是只刷新展开的节点,可能是你的节点没展开。

目前你可以先这样应付,下个版本我会在 TreeView#refresh 里面加 withExpandable。

// refresh for TreeNodeGenerator
treeView.tree.refreshWithChild(node,false)
// refresh for cache
treeView.refresh(node,true)