2013-04-14 50 views
1

我有幾個arraycollections(我不知道它們的編號)包含一個相同的對象(等等)。刪除存儲在幾個ArrayCollections中的對象

var obj:MyObject = new MyObject(); 
var arc1:ArrayCollection = new ArrayCollection(); 
arc1.addItem(obj) 
// same operation for my x arraycollections 

是否可以刪除我的目標「目標文件」在第一的ArrayCollection,並自動在所有其他arraycollections刪除它也無需在每個刪除它的ArrayCollection逐一?

回答

0

假設你所有的陣列集合都有一個共同的來源,我會創造ListCollectionViews代替ArrayCollections,並讓他們都指向一個單一的ArrayCollection,即:

var masterCollection:ArrayCollection = new ArrayCollection(); 

for (var i:uint = 0; i < N; i++) 
{ 
    slaveCollections[i] = new ListCollectionView(masterCollection); 
} 

無論何時添加或從任何刪除一個項目slaveCollection它將被添加/從主控制器中刪除,所有其他列表將通過CollectionEvent進行更新。

0

假設所有的陣列集合不共享一個共同的來源,我會收集事件偵聽器添加到每個收集到處理您的需求:

for (var i:uint = 0; i < N; i++) 
{ 
    slaveCollections[i] = new ArrayCollection(); 
    slaveCollections[i].addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionListener); 
} 

...

private function collectionListener(event:CollectionEvent):void 
{ 

    if (event.kind != CollectionEventKind.REMOVE) 
     return 

    for each(var slaveCollection:ArrayCollection in slaveCollections) 
    { 
     for each(var item:Object in event.items) 
     { 
      var itemIndex:int = slaveCollection.getItemIndex(item); 
      if (itemIndex >= 0) 
      { 
       slaveCollection.removeItemAt(itemIndex); 
      } 
     } 
    } 

} 

這應該允許您在任何集合上調用:collection.removeItem(x),並將該項目從其他集合中刪除。

相關問題