ArrayCollection 与 array 区别

+ Array Collection 与 array 区别 ++1 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: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:Application

++2 正所谓吃一盏长一智,这下算是比较深刻体会Array 和 ArrayCollection的区别. 将DataGrid关联了一个Array,将这个Array删除一个记录, Grid就是不更新, 而换成ArrayCollection后, 删除后立即更新了. ArrayCollection = new ArrayCollection(array); 还好转换起来也还算方便.

Flash 中没有ArrayCollection

ArrayCollection实现了ICollectionView接口,在Flex的类定义内属于数据集,他提供更强大的检索、过滤、排序、分类、更新监控等功能.类似的还有XMLListCollection

这两者差别在于如果用array在作为data provider绑定于控件上,就无法获得控件的更新,除非控件被重新绘制或者data provider被重新指定,而Collection则是将array的副本存储于Collection类的某个对象之中,其特点是Collection 类本身就具备了确保数据同步的方法,