2013-04-14 1 views
1

У меня есть несколько arraycollections (я не знаю их количество заранее), которые содержат один и тот же объект (среди прочих).удалить объект, хранящийся в нескольких массивах ArrayCollections

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

Можно ли удалить свой объект «OBJ» в первом 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) в любой из ваших коллекций и удалить этот элемент из других.

 Смежные вопросы

  • Нет связанных вопросов^_^