在过去的几天里,我一直在努力完成这件事,但我做不到。有人请帮帮我! 让我不告诉你整个事情,我会尽量简单清楚地解释它。 我有 1 个 ArrayList。我正在尝试将其复制到另一个中并尝试删除特定索引处的项目。但这不仅会删除复制的 ArrayList 中的项目,还会删除原始 ArrayList 中的项目。
例如:
var DuplicateList:ArrayList = new ArrayList();
DuplicateList = OriginalList;
DuplicateList.removeItemAt(2);
上面不仅删除了DuplicateList中Index-2处的“Item 3”,也删除了OriginalList中的“Item 3”。
我只需要使用这种方法的一些变通方法,因为这是唯一的方法,当我更改 dataProvider列表控件从 OriginalList 到 DuplicateList。以下方法不会保留所有数据。
var DuplicateList:ArrayList = new ArrayList();
DuplicateList.addAll(OriginalList);
DuplicateList.removeItemAt(2);
ListCntrl.dataProvider = DuplicateList;
提前感谢您的帮助...
最佳答案
理解一个非常非常重要的事情:
ActionScript3 使用对对象的引用。因此,这行代码中的两个变量引用了 ArrayList
的完全相同的实例:
DuplicateList = OriginalList;
因此,当您从一个引用中删除一个项目时,它也会从下一个引用中消失。如果您想要 ArrayList
的两个单独实例,那么您需要像您稍后在代码中建议的那样克隆它。
到目前为止,一切顺利...但是为什么您的 ListCtrl
保留了 OriginalList
中的数据?那根本没有任何意义。如果您从 DuplicateList
中删除一个项目,然后将其用作数据提供者,那么该项目不应该存在。我认为这个故事还有更多...
关于android - Flex ActionScript - ArrayList 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11106947/