在添加和删除项目时迭代ArrayCollection

时间:2011-05-24 08:36:14

标签: flex actionscript arraycollection

我希望迭代Flex中的ArrayCollection,同时可以添加和删除项目。

因为我没有找到一种方法来使用Java中的“经典”迭代器,它可以完成这项工作。我试过Cursor。但它并不像我希望的那样真正起作用;)那么我该如何做得很好呢?


    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 个答案:

答案 0 :(得分:3)

我认为最好将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) ;
}

希望有所帮助

答案 1 :(得分:2)

尝试使用以下内容:

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

答案 2 :(得分:1)

您的问题有一个解决方案:

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

查看CollectionIterator类。

干杯

答案 3 :(得分:0)

看看ActionLinq。它实现了.Net Linq2Objects模式,包括IEnumerable。当然,你需要小心,因为你正在修改你正在迭代的项目......

var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);

for each(var item:String in iterator) {
  doSomethingTo(workingStack);
}

答案 4 :(得分:-1)

在flex(或actionscript)中,您所做的任何更改都会立即显示。所以你可以在for中做你想做的事情:

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

我认为应该可以正常工作。