`

Array和ArrayCollection的区别

阅读更多

从两个blog中获取的信息

//////信息1 start
当Array的数据发生变化的时候,用它作为数据源的控件不能感知这种变化。
例如:myArray.push("new value"); 这时,如果一个List用它作为dataProvider,List的列表中不会增加新加入的这个值。
而当ArrayCollection的数据发生变化的时候,能够通知控件发生变化。
例如:myArrayCollection.addItem("new item"); 这时,如果一个控件List用它作为dataProvider,List列表中会增加一列内容.
///////信息1 end
///////信息2 start
今天看到这么一篇帖子,但是我对他的正确性表示怀疑。
因为,我就是用Array做的dataProvider,效果是可以得到更新的。
Array和ArrayConllection做dataProvider,做VO,各有优缺点,相比之下
我还是选择了Array。
因为
1)取数组下标的应用要比让数组扩展的应用更多
2)后台JavaBean也用的是数组[]
3)for循环数组似乎比for each  ArrayConllection看起来更“傻瓜化”
4)给Array数组扩展长度,也可以变通实现,而且代价并不大

今后如果有更进一步研究,再来贴。
转帖部分如下:
ArrayCollection 实现接口 ICollectionView,在 Flex 的类定义内属于[数据集],他提供更强大的检索、过滤、排序、分类、更新监控等功能。FDK2提供的类似的类还有 XMLListCollection
      这两者差别在于如果用 array 在作为 data provider 绑定于 control 之上,就无法获得控件的更新,除非控件被重新绘制或者 data provider 被重新指定,而 Collection 则是将 array 的副本存储于 Collection 类的某个对象之中,其特点是 Collection 类本身就具备了确保数据同步的方法,例子如下(取自 adobe 内部工程师 training 示例,稍有改变)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
      <mx:Script>
          <![CDATA[
              import mx.collections.ArrayCollection;
              [Bindable]
              public var myArray:Array=["北京","上海","深圳"];
              [Bindable]
              public var myCollection:ArrayCollection=new ArrayCollection(myArray);
              public function addCountryToArray(country:String):void{
                  myArray.push(country);
              }
              public function addCountryToCollection(country:String):void{
                  myCollection.addItem(country);
              }
          ]]>
      </mx:Script>
      <mx:TextInput id="countryTextInput" text="广州"/>
      <mx:Label text="Bound to Array (Raw Object)"/>
      <mx:Button click="addCountryToArray(countryTextInput.text)" label="Add Country to Array"/>
      <mx:List dataProvider="{myArray}" width="200"/>
      <mx:Label text="Bound to Collection"/>
      <mx:Button click="addCountryToCollection(countryTextInput.text)" label="Add Country to Collection"/>
      <mx:List dataProvider="{myCollection}" width="200"/>
</mx:Application>
///////信息2 end
分享到:
评论

相关推荐

    Flex的Array和ArrayCollection

    Flex的Array和ArrayCollection

    ArrayCollection求最大值,最小值,排序

    在IT行业中,ArrayCollection是ActionScript 3.0和Flex框架中的一个重要数据结构,它扩展了Array类,提供了对数据的双向绑定和事件通知功能。ArrayCollection不仅支持数组的操作,还具备列表的数据管理特性,因此在...

    ArrayCollection不完全绑定

    在Flex编程中,ArrayCollection是一种常用的集合类,它继承自Array类并添加了对数据绑定的支持。然而,尽管ArrayCollection通常被用作数据绑定的主要工具,但在特定情况下,可能会遇到“ArrayCollection不完全绑定”...

    Flex:ArrayCollection转xml形式的实例

    ArrayCollection是基于Array的,但提供了对数据的更高级别的访问,如排序和过滤功能。在某些情况下,我们需要将ArrayCollection转换为XML格式,以便于数据交换或存储。本实例将详细介绍如何实现这一转换。 首先,...

    Flex中Tree组件的数据源举例(xml,array,object)

    同时,对于Array和Object数据源,你可能需要创建一个自定义的类来封装数据,以便在创建ArrayCollection时使用。 此外,Tree组件还支持数据提供者的变化监听,这样当数据改变时,Tree会自动更新。你可以通过添加`...

    java TO ArrayCollection

    `ArrayCollection`不直接接受Java对象,而是需要一个数组(`Array`)或者实现了`IList`接口的对象。这是因为Flex和Java运行在不同的环境中,它们的数据类型不完全兼容。 在描述中提到的问题是,当我们从Java方法...

    FLEX ArrayCollection删除过滤的数据问题解决

    在Flex开发中,ArrayCollection是一种常用的集合类,它继承自Array并添加了对数据绑定和事件处理的支持。然而,当ArrayCollection应用了过滤器后,直接使用`removeItemAt()`方法尝试删除过滤后的数据可能会遇到问题...

    ArayyCollection排序

    ArrayCollection是Flex框架中的一个类,它是Array的包装器,提供了数据绑定和事件处理功能。在这个主题中,我们可能会探讨如何对ArrayCollection中的元素进行排序。 在Flex或ActionScript开发中,ArrayCollection是...

    flex导入excel2007版本以上的类库Rxlsx.swc

    as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持....var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于表格控件grid绑定数据显示出来

    XML TO ArrayCollection 两种实现方式

    ArrayCollection是一种常用的集合类,它基于Array,并提供了数据绑定功能,适用于用户界面的数据展示。本篇文章将详细介绍两种将XML转换为ArrayCollection的方法。 ### 方法一:手动映射XML属性到Object 第一种...

    flex导入excel2007版本以上并支持日期格式的类库Rxlsx

    as3xls 只支持excel2003版本以下的,不支持扩展名为.xlsx的excel,而类库Rxlsx支持....var datasource:ArrayCollection = new ArrayCollection(sheet); //可转换为ArrayCollection,用于表格控件grid绑定数据显示出来

    flex android开发学习好实例

    在我们的例子中,可能的数据源可以是XML、Array或ArrayCollection。 下面是一段简单的Flex代码,展示了如何创建一个基本的List控件: ```actionscript &lt;![CDATA[ import mx.collections.ArrayCollection; ...

    XML节点和属性的访问

    这是因为`Array`不支持数据变更的监听,而`ArrayList`和`ArrayCollection`提供了这种功能。Adobe在Spark组件中做出这样的改变,是为了提高数据绑定的稳定性和一致性。在MX组件中,`ComboBox`和`DropDownList`的`data...

    Search,查询结果

    首先,我们需要了解AS3中的数据结构,如Array和Vector,它们可以用来存储列表数据。Array是最基本的数据结构,而Vector则提供了类型安全和更好的性能。当我们有大量数据时,通常会使用ArrayCollection,它扩展了...

    看完Flex就可以做出一个小游戏

    - **Array 和 ArrayCollection**:Array 是基本的数组类型,ArrayCollection 是它的动态版本,支持数据绑定。 9. **HTTP 请求**: - **HttpService**:用于向远程服务器发送 HTTP 请求,通过 `url` 指定请求地址...

    flex 经典教程下载

    dataGrid.dataProvider = new ArrayCollection(arrayData); ``` **HTTP服务与报表** HttpService 类用于向远程服务器发送请求。通过设置url和result属性,指定请求地址和返回结果处理方法,然后调用`Send()`方法...

    ActionScript.3.0.Cookbook.中文完整版.rar

    书里会讲解如何使用XML、JSON等格式进行数据交换,以及如何使用Array、ArrayCollection等数据结构进行数据操作和排序。 4. 事件处理:ActionScript 3.0的事件模型是其强大功能的一部分。通过学习事件监听、触发和...

    flex图表展示数据源码

    在Flex中,数据源可以是Array、ArrayCollection或XMLListCollection等。这些数据结构可以动态更新,从而实现图表的动态更新,这正是“DynamicUpdate”这个文件名所暗示的。 动态更新数据源的步骤通常包括: 1. ...

    FLEX datagrid应用实例

    DataGrid可以与各种数据源绑定,包括Array、ArrayCollection、XMLList等,也可以通过数据提供者机制连接到更复杂的后端服务。 二、DataGrid的基本使用 创建一个基本的DataGrid涉及以下几个步骤: 1. 导入必要的库:...

    数据驱动组件.数据驱动组件.

    是`Array`,则转换为`ArrayCollection`;是`XML`或`XMLList`,则转换为`XMLListCollection`;在其他情况下,转换为单元素的`ArrayCollection`。这些转换是基于`ICollectionView`、`IList`和`ArrayCollection`等接口...

Global site tag (gtag.js) - Google Analytics