apache flex - 在添加和删除项目时遍历 ArrayCollection



我想在 Flex 中迭代 ArrayCollection,同时可以添加和删除项目。

因为我没有找到像 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();
    }

我认为最好使用新集合/数组进行操作

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

希望有帮助

尝试使用以下方法:

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

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

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

看看 CollectionIterator 类。

干杯

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

var workingStack:ArrayCollection = getData();
var iterator:IEnumerable = Enumerable.from(workingStack);
for each(var item:String in iterator) {
  doSomethingTo(workingStack);
}

在 flex(或 actionscript)中,您所做的任何更改都会立即可见。因此,您可以在以下方面做您想做的事:

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

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

相关内容

  • 没有找到相关文章

最新更新