3

beginMoveRows / endMoveRows を使用して永続インデックスを固定しようとしていますが、展開された状態フラグ / 永続インデックスが重複してはならない場合があります。

非常に多くのコードがあるので、マシンに実行するように指示したと思われることを見ていきます。

すべての魔法を行うメソッド sortChildrenOf(item) があります。

  • item から子を見つけ、各子をパラメーターとして sortChildrenOf を呼び出します
  • 古い注文を保存
  • 子のクイックソート
  • 古い順序と新しい順序の違いを見つける
  • それぞれの違いについて:
  • beingMoveRows
  • 変更を適用
  • endMoveRows

2 つのレベルがある場合はすべてが完全に機能しますが、「長い」データ ツリーを入力すると、永続的なインデックスが破損します。

ツリーのデータはネットワークから更新されますが、実際の更新は GUI スレッドで行われます。

物事を行うべき正確な順序はありますか? これを引き起こすメソッドを継承するのを忘れたのでしょうか?

これらのメソッドを実装しました: - データ - フラグ - getItem - インデックス - 親 - setData

編集:言及するのを忘れました、私はlayoutAboutToBeChangedを発行し、メインのsortChildrenOf呼び出しの前後にlayoutChangedを発行しました。

4

1 に答える 1

2

私はそれを動作させましたが、beginMoveRows と endMoveRows では動作しませんでした。私は、layoutAboutToChange を発行する古いシステムを使用して、それを操作する永続的なインデックスのリストを取得し、changePersistentIndexList でそれを元に戻し、最後にレイアウトが変更されたことを発行しました。

これが修正だったので、beginMoveRows、endMoveRows、およびツリー型データの永続インデックスに何らかのバグがあると考えるようになりました。

コードのより良い例が必要かどうか尋ねてください。

于 2013-08-06T10:32:33.613 に答える