2016-05-08 14 views
1

NatTableで実装されたツリーの並べ替えを実装しようとしていますが、実際の動作を理解できません。私の問題は、「ツリー」列以外の列のソート後、子ノードが無効な親に移動できることです。要素の順序は、階層のすべてのレベルで正しいですが。だから基本的に私はTreeList.Format.getComparator()の目的を理解しておらず、列に登録されているコンパレータとどう関係しているのか、そしてノードがその親をいつ、そしていつ、いつ変更できるのか分かりません。NatTableで実装されたツリーの並べ替え

私は例 TreeGridExampleを始めていると私は私がコラムbarを並べ替える場合は、bb1ノードはnbからジャンプし、私は同じ問題

private void createDatums() {  
    createDatum(null, "a", 2);   
    createDatum("a", "aa1", 0);   
    createDatum(null, "b", 0);   
    createDatum("b", "bb1", 0); 
    createDatum(null, "m", 1); 
    createDatum(null, "n", 0); 
} 

を持っていると、テストデータを作成することができたと並べ替えが解除されると、再び子の子ですb

答えて

0

コンパレータはツリー階層を考慮する必要があります。

さらに詳しい情報はherehereを参照してください。

+0

私は両方の議論を読みましたが、それでもノードが親を変えてしまう理由を見つけることができません。私が気づいたように、NatTableのサンプルコードでも同じ問題があります。 – Joel

+0

私が覚えている限り、ツリーはDFSの順序でリストを上って作成されます。階層を管理するツリー形式オブジェクトと組み合わせる必要があります。 –

0

この例では、SortableTreeComparatorが正しく動作していない可能性があります。答えは簡単ではありません。

まず、TreeListを正しく動作させるには、リスト内の要素を正しい順序にする必要があります。これはツリーコンパレータです。

追加したいのは、カスタムソートを最下位レベルに追加することです。その場合、ツリーレベルをチェックするためにコンパレータを拡張する必要があります。

親が変更される理由は、コンパレータがコレクションの順序を変更し、ツリー構造全体を破壊するためです。

GroupByComparatorのGroupBy機能で動作させることができましたが、リストにGroupByObjectsがあります。そして、一緒に働くすべてを得ることは大変な仕事だったことを覚えています。

SortableTreeComparatorを修正するためのチケットを作成してください。私はそれをいつできるのか分かりません。

関連する問題