Итерация по ArrayCollection при добавлении и удалении элементов - PullRequest
3 голосов
/ 24 мая 2011

Я хочу перебрать ArrayCollection во Flex, в то время как элементы могут быть добавлены и удалены.

Поскольку я не нашел способа использовать «классический» итератор, как в Java, который бы выполнялработа.Я попробовал Курсор.Но на самом деле это не работает так, как я хочу;) Так как мне это сделать красиво?


    var cursor:IViewCursor = workingStack.createCursor();

    while (!cursor.afterLast)
    {
        // Search
                    deepFirstSearchModified(cursor.current.node,nodeB,cursor.current.way);
        // Delete Node
        cursor.remove();
        // Next Node
        cursor.moveNext();

    }

Ответы [ 5 ]

3 голосов
/ 24 мая 2011

Я думаю, лучше использовать New Collection / Array для операций как

private function parseSelectedItem(value:IListViewCollection):IListViewCollection{
 var result:Array = new Array();
    for each(var item:Object in value)
    {
        //result.push();
        //result.pop();
    }
    return new ArrayCollection(result) ;
}

Надежды, которые помогают

2 голосов
/ 24 мая 2011

Попробуйте использовать следующее:

for (var i:int = myArrayCollection.length - 1; i >= 0; i--) {
   myArrayCollection.removeItemAt(i);
}
1 голос
/ 24 мая 2011

Есть решение вашей проблемы:

http://www.ericfeminella.com/blog/actionscript-3-apis/

Посмотрите на класс CollectionIterator.

Приветствия

0 голосов
/ 24 мая 2011

Взгляните на ActionLinq .Он реализует шаблон .Net Linq2Objects, включая IEnumerable.Конечно, вы должны быть осторожны, потому что вы изменяете элементы, по которым вы перебираете ...

0 голосов
/ 24 мая 2011

В flex (или actionScript) любые изменения, которые вы делаете, видны мгновенно.Таким образом, вы можете делать то, что вы хотите для:

    for (var i : Number = myArrayCollection.length; i > 0; i--) {
       myArrayCollection.removeItemAt(i - 1);
    }

Я думаю, что это должно работать нормально.

...