0

並べ替える必要のあるウィジェットのリストがあります。これらのウィジェットのリストのコンテナーを作成して、新しいウィジェットが追加されるたびにそれらを再ソートしたいと思います。どうすればいいですか?

私は次のように見ることができます:

  1. 簡単な方法は、それらをarraylistに配置し、Comparatorを介して並べ替えることですが、新しい要素が追加された後、コンテナーからすべてのリストを削除し、新しい順序で再度追加する必要があります。
  2. いくつかのソートコンテナを使用します。私はこれのためにCellTableだけを見つけました。しかし、実際にはその豊富な機能は必要ありません-列が1つしかないので、新しい要素が追加または削除された場合にのみ、ユーザーイベントを並べ替える必要はありません-それで、ユースケースで利用できるものは他にありますか?

GWT 2.4

PS実際、私は「ウィジェットコレクションに裏打ちされたウィジェットコンテナ」のように表現できるものを探しています。つまり、コレクションを変更します。コンテナはその内容を変更します。これをどのように実装できますか、またはどこで見つけることができますか?

PPSウィジェットは異なる可能性があるため、CellTableを簡単に使用できるとは思いません。

4

1 に答える 1

1

新しいウィジェットを追加した後、DOM内の要素を簡単に並べ替える方法はありません。ウィジェットがアタッチされている場合、ウィジェットを切り離して再度アタッチせずに、ウィジェットを移動(ドキュメント構造内での位置を変更)することはできません。絶対位置を使用すると、必要に応じて、左上の座標を変更してアイテムを移動できます。

TreeItem要素をソートする必要がある場合(組み込みのソートメソッドは使用できません)、同様の問題を解決する必要がありました。回避策として、すべての子をリストに読み込み、同時に親ウィジェットから削除してから、Comparatorを使用してこれらのアイテムを並べ替え、並べ替えられたリストから親に戻します。すべてが単一のsort()メソッドに含まれています。このメソッドは、必要なすべての機能をカプセル化し、このコードの理解を簡素化します。

「ウィジェットコレクションに裏打ちされたウィジェットコンテナ」

その場で並べ替えや再取り付けもできるようなものについて学びたいと思います。しかし、それでも私が想定しているのと同じ取り外し-取り付けによって支えられます。あなたの特定のニーズに合うものを自分で書くことをお勧めします。TreeまたはFlowPanelなどが必要です。これを拡張して、コンテキストに応じてsort()ロジックを追加できます。それに応じてadd()メソッドをオーバーライドします。したがって、最初のオプションは私にとって可能な解決策のように見えます。

于 2012-08-31T18:39:22.157 に答える