我正在尝试使用此代码交换ArrayCollection中的两个项目。
private function swapCollectionElements(collection:ArrayCollection, fromIndex:uint, toIndex:uint) : void
{
var curItem:Object = collection.getItemAt(fromIndex);
var swapItem:Object = collection.getItemAt(toIndex);
collection.setItemAt(curItem, toIndex);
collection.setItemAt(swapItem, fromIndex);
collection.refresh();
}
调试代码时,我可以看到curItem和swapItem是正确的对象,但是当我第一次使用setItemAt时,它取代了我想要的那个,但也取代了我不想要的那个。任何想法在这里发生了什么?
答案 0 :(得分:4)
这是因为调用getItemAt来设置curItem和swapItem会导致对ArrayCollection中对象的引用而不是对象本身。使用第一个setItemAt更改对象时,您的引用也会更改。此时curItem和swapItem可能都引用同一个对象。我会采用不同的方法,而是使用removeItemAt和addItemAt,这样你就可以使用对象而不是引用。希望有所帮助。