android - Flex ActionScript - ArrayList 问题

标签 android ios apache-flex actionscript

在过去的几天里,我一直在努力完成这件事,但我做不到。有人请帮帮我! 让我不告诉你整个事情,我会尽量简单清楚地解释它。 我有 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/

相关文章:

java - IndoorAtlas SDK 2.0 map 未加载

ios - 如何在IOS中检查自动对焦是否仍在进行?

java - "Invalid byte 1 of 1-byte UTF-8 sequence"错误

android - 如何为启动器应用程序图标创建透明背景

php - 如何在android webview中保持网站 session

ios - 如何使用 iOS Swift 在 REST Web 服务 URL 上应用 Cookie

ios - scrollView ContainerView 内的 Swift 3.0 UiTableView 未调用 DidSelectRow(Twitter 配置文件)

您可以使用 Adob​​e 的 Alchemy 来执行批处理文件吗?

apache-flex - 您知道 Adob​​e Air/Flex 应用程序的最佳实践和设计模式吗?

android - 将操作栏方向更改为从右到左