2013-04-14 3 views
1

하나의 동일한 객체 (다른 객체 중에서)를 포함하는 배열 배열이 여러 개 있습니다 (그 배열의 번호를 미리 알지 못합니다).여러 ArrayCollections에 저장된 객체를 삭제합니다.

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

는 처음있는 ArrayCollection 내 객체를 "OBJ"삭제하고 자동으로 각에서 그것을 삭제하지 않고 다른 모든 arraycollections에 하나 하나를 ArrayCollection에 너무 삭제할 수 있습니까?

답변

0

모든 배열 컬렉션 공통 소스를 공유한다고 가정하면, 내가 대신 ArrayCollections의 ListCollectionViews을 만들고 하나의 ArrayCollection에 모든 지점이 것, 즉 : 추가 또는에서 항목을 제거 할 때마다

var masterCollection:ArrayCollection = new ArrayCollection(); 

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

slaveCollection은 마스터에서 추가/제거되고 다른 모든 목록은 CollectionEvent를 통해 업데이트됩니다. ...

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); 
      } 
     } 
    } 

} 

이를 모든 배열 모음 공통 소스를 공유하지 않는 것을 가정

0

, 나는 귀하의 요구 사항을 처리하기 위해 각각의 컬렉션에 수집 이벤트 리스너를 추가합니다 컬렉션 중 하나에서 collection.removeItem (x)을 호출하고 다른 컬렉션에서 해당 항목을 제거해야합니다.

관련 문제