首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对TreeList进行分类?

如何对TreeList进行分类?
EN

Stack Overflow用户
提问于 2011-08-31 01:43:20
回答 2查看 1.1K关注 0票数 1

我有一个很奇怪的问题--如何对TreeList进行排序?我在SWT NatTable中使用它,当我的数据提供程序设置为GlazedListsDataProvider并在其中包含TreeList时,排序以一种非常奇怪的方式工作。如果我在SortedList中使用GlazedListsDataProvider,它工作得很好。

例如,我的树看起来是这样的:

代码语言:javascript
运行
复制
Root
  Node1
   Child1
   Child2
  Node2
   Child3

我只需要对Node1和Node2中的子级进行排序,将它们彼此分开(这样只有child1和child2会改变它们的位置)。但是,在排序后,它看起来如下所示:

代码语言:javascript
运行
复制
Root
  Node1
  Node2
   Child1
   Child2
   Child3

反向排序:

代码语言:javascript
运行
复制
Root
  Node1
  Node2
   Child2
   Child1
   Child3

所以基本上,它在某种程度上是有效的(它确实以正确的方式对子元素进行排序),但它还对不应该排序的元素进行排序。这种行为的原因可能是什么?我的排序算法很简单:

代码语言:javascript
运行
复制
compare (element1, element2) {
   if (both elements are under same parent and have same type)
     compare
   otherwise
     return 0
   }

我按照下面的示例http://kari.dy.fi/src/sample/foldertree.zip进行排序-意思是,在SortState中构建比较器之后,我将它设置到TreeList使用的TreeFormat中。

我假设,返回0不会以正确的方式工作,然而,我看不到其他的解决方案。或者它可能是其他地方的问题,而不是在我的比较程序中。

感谢您的耐心,我将很高兴得到任何提示。致以最好的问候,Alex G。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-03 02:59:11

所以,这是我对这个问题的解决方案:DZone Article。再说一次,这只是一种可能的解决方案,它并不完美,但它正在发挥作用:)

票数 0
EN

Stack Overflow用户

发布于 2011-09-21 20:41:42

当to节点具有不同的父节点时,您当前的代码将返回0。这就像,‘如果他们有不同的父母,我不在乎谁先走’。但我想你会想,‘如果他们有不同的父母,第一个应该是第一个父母的那个’。如果您只想在父级中进行自定义排序,则应该在父级之外保持以前的排序方式。不确定确切的代码,但您可以这样做:

代码语言:javascript
运行
复制
compare (element1, element2) {
   if (both elements are under same parent and have same type)
     compare
   otherwise
     return original.compare(element1,element2)//delegate to the original sorting
   }

代码语言:javascript
运行
复制
compare (element1, element2) {
   if (both elements are under same parent and have same type)
     compare
   otherwise
     compare(element1.parent,element2.parent) // sort on parent level
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7247470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档