私たちのアプリケーションは RCP アプリケーションであり、数千項目のテーブルを表示する必要があります。このため、SWT.VIRTUAL
私たちはTableViewer
. 選択を除いて、それはかなりうまく機能します。
次の問題があります。
TableViewer
並べ替えとフィルタリングをサポートしています。仮想テーブルビューアーを使用する場合、選択を変更すると、現在選択されているアイテムは保持されず、現在選択されている行が保持されます。これにより、別のアイテムが選択されます。例: ユーザーが 5 行目にあるアイテム「A」を選択してソートを実行すると、ソート後にアイテム「A」の代わりに 5 行目のアイテムが選択されます。非仮想を使用するTableViewer
と、すべて正常に動作します。
デバッグを試みたところ、AbstractTableViewer.VirtualManager
クラスのキャッシュがモデルで最新のように見えることがわかりました。でキャッシュを強制的に使用するAbstractTableViewer.virtualSetSelectionToWidget()
ことは、可能なアプローチです。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=338696で提案されている解決策を実装しようとしました。しかし、うまくいきませんでした。
いくつかのポインタまたは代替の回避策を提案してください。
答えてくれてありがとう。