[英]How to sort a TreeList with a different comparator for each column in a NatTable
[英]How to sort glazed TreeList?
我有一個很奇怪的問題-如何對玻璃樹列表進行排序? 我在SWT NatTable中使用它,並且當我的數據提供程序設置為GlazedListsDataProvider且其中包含TreeList時,排序的方式非常奇怪。 如果我將GlazedListsDataProvider與SortedList結合使用,則效果很好。
例如,我的樹看起來像這樣:
Root
Node1
Child1
Child2
Node2
Child3
我只需要排序子節點INSIDE 1和Node2中的另一個子節點(以便僅child1和child2可以更改其位置)。 但是,排序后看起來如下:
Root
Node1
Node2
Child1
Child2
Child3
反向排序:
Root
Node1
Node2
Child2
Child1
Child3
因此,基本上,它是可以工作的(它確實以正確的方式對子級進行了排序),但是它對元素進行了排序,而不應該對其進行排序。 這種行為可能是什么原因? 我的排序算法很簡單:
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.
當到具有不同父節點的節點時,當前代碼將返回0
。 就像,“如果他們有不同的父母,我不在乎哪一個先行”。 但是我想您要,“如果他們有不同的父母,那么第一個應該是有第一個父母的那個”。 如果只想在父母內部進行自定義排序,則應保持在父母外部進行排序。 不確定確切的代碼,但是您可以執行以下操作:
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
}
要么
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
}
因此,這是我針對此問題的解決方案: DZone文章 。 再一次,它只是可能的解決方案之一,雖然不是完美的,但是它正在起作用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.