我有一個ArrayCollection即dataProvider
爲spark.components.List,它有allowMultipleSelection="true"
。有一個「刪除所選項目」按鈕,該按鈕啓動從被單擊的ArrayCollection中刪除所有選定的項目。從ArrayCollection中刪除多個項目使用selectedIndices
我目前使用下面的方法:
myList.selectedIndices.sort(ascendingSort);
// remove items, counting backwards
for (var i:uint = myList.selectedIndices.length; i > 0; i--) {
myArrayCollection.removeItemAt(myList.selectedIndices[i-1]);
}
其中ascendingSort
做你所期望的)。它工作正常,我知道它會總是工作。
但是,我確實注意到,如果我完全忽略了這種排序,令我驚訝的是刪除仍然有效。原因是,當調用removeItemAt
時,selectedIndices
被相應地更新。
所以我的問題是:可以依靠removeItemAt
調用更新selectedIndices
中的值嗎?或者可能在運行時和/或Flex SDK版本中有所不同?
顯然,如果它是可靠的,那麼忽略這一點將是一個重大的改進。
感謝您的回覆。我更感興趣的是您可能在SDK和運行時期遇到的任何經驗,特別是在實施我感興趣的方法方面,但即使是其他與數據綁定有關的方法也值得您去了解。我想我更基本上問清單中的屬性和底層的dataProvider之間的數據綁定有多可靠。你能舉出Flex 3中存在的任何特定的實現實例,例如,在Flex 3.6或4或4.5中已經改變了嗎? – merv
@merv什麼是「數據綁定相關方法」?對於所有意圖和目的,通過綁定與dataProvider和列表上的屬性沒有關係。也許這個數據綁定的答案將有助於:http://stackoverflow.com/questions/8157901/what-does-the-do/8159057#8159057。在SDK的版本中有很多事例發生了變化;儘管我不知道任何與數據綁定有關的手頭事物。 – JeffryHouser
我很抱歉模糊不清。我試圖通過CollectionChange事件引用對底層dataProvider的更改傳播到List組件的事實。我試圖徵求的具體例子是與實施這種類型的傳播有關的例子。一個非常具體的例子是,在之前的SDK中,更新selectedIndices需要調用「refresh()」。無論如何,我最終只是比較了跨SDK的ListCollectionView.as和ArrayList.as的相關部分,並且從3.0開始代碼似乎基本沒有變化。謝謝。 – merv