リストから dataProvider があります。リストには、var -selectedDamageIdx からバインドされた selecteIndex があります。selectedDamageIdx を多かれ少なかれ変更し、同時にリスト内の項目を移動します。すべてがオーバーしている場合、インデックスは正しくありませんが、selectedDamageIdx の値は正しいです。助言がありますか?selectedDamageIdx がパブリックでバインド可能であることを確認しました。バインディングは mxml で行われます。
私のリストはダメージリストです。ダメージ itemRenderer とダメージ オブジェクトを使用します。基本的に、私がやっていることは次のとおりです。リストと同じ情報を含むサムネイルがあります。サムネイル内で何かをドラッグしてアイテムを移動すると、リストのアイテムの位置が更新されます。_from と _to の位置にアクセスできる場所に、次のように onChangePosition という関数があります。だから私は次のことをします:
if(_to > _from)
{
(damages.dataProvider as ArrayCollection).addItemAt(damage,_to);
(damages.dataProvider as ArrayCollection).removeItemAt(_from);
selectedDamageIdx = _to-1;//because of shift all the items between the _from and _to will move back one position. And the moved item will actually get the index to-1
}
else if (_from > _to)
{
(damages.dataProvider as ArrayCollection).removeItemAt(_from);
(damages.dataProvider as ArrayCollection).addItemAt(damage,_to);
selectedDamageIdx = _to;
}
これはサムネイルで正常に機能し、selectedDamageIdx は期待値を取得します。しかし、追加と削除の操作のために、リストが間違った項目を選択し、selectedIndex が間違っていると思います。リストの selectedIndex の _to > _from が 1 少ない最初のケース。_to < _from the selectedIndex が必要以上に 1 つ多い 2 番目のケース。