flex数据基础 array和arraycollection
2018-01-12 16:55
423 查看
Flex数据基础-Array与ArrayCollection
2010-12-16 12:34
2010-12-16 12:34
通常Flex与外部数据传递时采用XML/XMLList的方式,而内部数据传输大多采用Array或ArrayCollection的方式。 常用的Array类型通常是:一维数组、二维数组和联合数组等。 ArrayCollection是对Array的包装。包装之后,数据会具有更丰富的数据处理能里。我转的教程说的挺详细,可以看看。 通常的做法是先定义Array,然后将其包装成ArrayCollection。 一、定义Array 1、用AS定义 var arr:Array = new Array("宝马","奔驰","奥迪","面包"); var arr2:Array = ["宝马","奔驰","奥迪","面包"]; var arr3:Array = new Array( {name:"宝马",type:"汽车"}, {name:"奔驰",type:"汽车"}, {name:"奥迪",type:"汽车"}, {name:"面包",type:"食物"} ); 2、用标签定义 <mx:Array id="arr"> <mx:String>宝马</mx:String> <mx:String>奔驰</mx:String> <mx:String>奥迪</mx:String> <mx:String>面包</mx:String> </mx:Array> 2、定义ArrayCollection 现定义Array再包装 var arr:Array = new Array( {name:"宝马",type:"汽车"}, {name:"奔驰",type:"汽车"}, {name:"奥迪",type:"汽车"}, {name:"面包",type:"食物"} ); var arrc:ArrayCollection = new ArrayCollection(arr); 或者直接定义: var arrc:ArrayCollection = new ArrayCollection([ {name:"宝马",type:"汽车"}, {name:"奔驰",type:"汽车"}, {name:"奥迪",type:"汽车"}, {name:"面包",type:"食物"} 3、添加/移除ArrayCollection项 1)添加项 ac.addItemAt({name:"奔驰",type:"汽车"},0); 注意是两个参数,不然会报错 2)移除项 ac.removeItemAt(0); 注意索引值如果大于ac中的项目,后面的语句不会执行。 3)同时移除多项 var toRemove:Array = []; for(var i:int=0; i<tlist0.selectedItems.length;i++) toRemove.push(tlist0.selectedItems[i]); for(i=0;i<toRemove.length;i++) myDP.removeItemAt(myDP.getItemIndex(toRemove[i])); 4)检测ArrayCollecction是否存在某对象 要检查ArrayCollection中是否存在复杂对象,需要比较两个对象的值,例如: private function checkItem():int { var i:int; var arr:Array = AC.source; while() { if(arr[i].name==nameTI.text && arr[i].age==ageTI.text) { return i; } i++; } return -1; } 不能用 AC.contains({name:nameTI.text,age:Number(ageTI.text)}) 或 AC.getItemIndex({name:nameTI.text,age:Number(ageTI.text)}) 因为contains和getItemIndex方法都是比较对象的指针,而不是他们的值。 这里要解释下: private var arr:Array= new Array( {name:"奔驰",type:"汽车"}, {name:"宝马",type:"汽车"}, {name:"大象",type:"动物"}, {name:"小高",type:"同学"} ); private var ac:ArrayCollection = new ArrayCollection(arr); protected function chk():void { label1.text = ac.contains({name:"小高",type:"同学"}).toString(); } 这里显示的是false;为什么?上面也说了,因为contains和getItemIndex都是比较对象的指针,而不是值,再来举个例子: private var obj:Object = {name:“打印机”,type:"办公电器"}; private var arr:Array = new Array( {name:"奔驰",type:"汽车"}, {name:"宝马",type:"汽车"}, {name:"大象",type:"动物"}, {name:"小高",type:"同学"}, obj ); protected function chk():void { label1.text = ac.contains(obj).toString(); } 这里就会显示true了,也就是说虽然内容一样,但是在内存中的位置不同,那比较出来的就是false 5)监听ArrayCollection数据是否被修改 private var coll:ArrayCollection = new ArrayCollection(); coll.addEventListener(CollectionEvent.COLLECTION_CHANGE,collChangeHandler); 6)遍历ArrayCollection数据 for(var i:int=0; i<ac.length;i++) { trace(ac.getItemAt(i).name); } |
相关文章推荐
- Flex基础-----之Flex中Array和ArrayCollection的区别
- 根据tree绑定数据的上下级关系,实现无限制的分支等级[flex][arraycollection][tree]
- flex基础篇二 flex加载数据的两种方式,httpService和本地xml
- GoLang基础数据类型--->数组(array)详解
- Flex的Array和ArrayCollection的用法和区别
- Flex4之元数据标签:[ArrayElementType] [Bindable] [DefaultProperty] [Deprecated] [Embed] 等
- Flex的Array和ArrayCollection
- Flex之旅:第一部分:flex必备基础知识积累(2)---自定义事件以及事件数据传递
- Flex 实践——在 Datagrid中及时显示Array的数据变化
- flex中,用ArrayCollection作为DataGrid的dataProvider,想在ArrayCollection末尾插入数据的解决方法
- Flex 使用ArrayCollection的FilterFunction进行数据过滤
- Flex数据绑定基础介绍
- Flex之旅:第一部分:flex必备基础知识积累(4)---ArrayCollection, Array赋值写法
- javascript基础学习(1)数据类型--array
- Flex的Array和ArrayCollection
- Flex 遍历 ArrayCollection, Array
- Flex——Array,ArrayCollection,Vector性能比较
- Flex 使用ArrayCollection的FilterFunction进行数据过滤
- flex arraycollection 转Json数据格式
- Flex基础-----之元数据标签说明(基本够全了)