Flex 集合 ArrayCollection 的使用
转:http://keren.iteye.com/blog/380847
转:http://callan.iteye.com/blog/335551
集合是ActionScript 中功能强大的基于索引的数组组件,添加了如对内容进行排序等功能,
操作数组的读取位置,创建经过排序的数组视图。集合也能通知其任意事件监听器监听其数
据是否改变,以及任何数据项被添加到源数组时可执行自定义逻辑。当数据改变时可通知其
监听器,这是集合的新功能,叫数据绑定,还有就是允许DataGrid 和List 组件对其内容进行排序和过滤。集合是使用数据驱动控件以及从数据库返回的服务器端服务的重要内容。
经常被使用的两个集合类型是ArrayCollection 类XMLListCollection 类。 
ArrayCollection 是Array 的包装类,提供更方便的如添加和移除数据项以及能够创建游标启用要轻松地存储数组中的最后读取的位置等方法。而XMLListCollection 是XML 对象的包装类,提供的功能有:根据索引访问数据,添加新对象以及游标等方法。XMLListCollection 对于处理XML 对象以及经常需要解析XML 为数组时特别有用。
Java代码  收藏代码
<mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object label=" ActionScript基础" data=" A-1" />
                <mx:Object label="追风筝的人" data="B-1" />
                <mx:Object label="神秘河" data="C-1" />
            </mx:Array>
        </mx:source>
</mx:ArrayCollection>  
使用addItemAt 或addItem 方法插入对象到ArrayCollection ,
getItemIndex 或contains 方法用于检测数据项是否已存在于数组中,而ArrayCollection 的sort
属性是对ArrayCollection 排序以及通过某个字段决定接收第一个或最后一个数据。 
Flex代码  收藏代码
<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;
private var coll:ArrayCollection;  
private function init():void
{
   coll=new ArrayCollection([{name: "Martin Foo", age: 25}, {name: "Joe Bar", age: 15}, {name: "John Baz", age: 23}]);
}  
//要插入元素到指定位置,可使用addItemAt 方法:     
private function addItem():void
{
   coll.addItemAt({name: "James Fez", age: 40}, 0);
}
]]>
</mx:Script>   
Sort 对象提供findItem 方法用于搜索这个ArrayCollection 中的所有元素。方法原型如下: 
public function findItem(items:Array, values:Object, mode:String,
returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
Value 参数可以是包含属性和所需值的任何对象。Mode 字符串可以是
Sort.ANY_INDEX_MODE,表示返回任何匹配项索引,Sort.FIRST_INDEX_MODE 表示返
回第一个匹配项索引, Sort.LAST_INDEX_MODE 表示返回最后一个匹配项索引。
returnInsertionIndex 参数表示如果该方法找不到由values 参数标识的项目,并且此参数为
true,则findItem() 方法将返回这些值的插入点,也就是排序顺序中应插入此项目的。
compareFunction 设置用于查找该项目的比较运算符函数.
使用Sort 对象的findItem 方法代替上面的方法: 
Flex代码  收藏代码
private function checkExistence():int {
var sort:Sort = new Sort();
return sort.findItem(coll.source,
{name:nameTI.text, age:Number(ageTI.text)},
Sort.ANY_INDEX_MODE);
}    
首先要创建一个Sort,传递一个SortField 对象数组给fields 属性。这些SortField 对象包含
的字符串正是每个ArrayCollection 元素将要用来排序的属性。如要对每个对象的age 属性进
行排序,创建Sort 对象,传递SortField,设置排序字段为age: 
Flex代码  收藏代码
private function getOldest():void {
var sort:Sort = new Sort();
sort.fields = [new SortField("age", false)];
coll.sort = sort;
coll.refresh();
trace(coll.getItemAt(0).age+" "+coll.getItemAt(0).name);
}    
过滤ArrayCollection 
对ArrayCollection 数据进行过滤,设置过滤器移除些不匹配的结果。 
将原型为function(item:Object):Boolean 的函数传递给ArrayCollection 的filter 属性。如果返
回true 表示值继续留在ArrayCollection,返回false 表示其值被移除。 
filterFunction 属性是由ListCollectionView 类定义,它是ArrayCollection 的父类。当过滤器
函数被传递给继承自ListCollectionView 的任何子类后,这里为ArrayCollection 对象,应用
过滤器后必须调用refresh 方法: 
Flex代码  收藏代码
import mx.collections.ArrayCollection;
private var coll:ArrayCollection;
private function init():void {
coll = new ArrayCollection([
{name:"Martin Foo", age:25},
{name:"Joe Bar", age:15},
{name:"John Baz", age:23},
{name:"Matt Baz", age:21}]);
coll.filterFunction = filterFunc;
coll.refresh();
for(var i:int = 0; i<coll.length; i++) {
trace(coll.getItemAt(i).name);
}
}
private function filterFunc(value:Object):Object {
if(Number(value.age) > 21) {
return true;
}rreturn false;
}    
补:JAVA里的LIST、ARRAYLIST对应到FLEX里可以用ArrayCollection来接收。
eg:通过JAVA写一个连接ORACLE的方法,返回一个ARRAYLIST,该ARRAYLIST里放的一般是一个个的HASHMAP。如果通过RemoteObject(或其他方式)来调用该方法时,FLEX端接收到的肯定是个OBJECT,这个时候可以强制转换成ArrayCollection。然后通过遍历该ArrayCollection,来取得存每条数据的OBJECT(JAVA里的HASHMAP)。 
FLEX里没有MAP类,但只要你知道了JAVA里MAP的KEY,那么FLEX里就可以作为OBJECT的一个属性来访问。
Flex 集合 ArrayCollection 的使用的更多相关文章
- flex与后台及页面间对象的传递
		
1.从flex中发送请求后,利用<s:RemoteObject/>启用回调方法,类似于jQuery的post函数: <fx:Declarations> <s ...
 - python的flex服务端数据接口开发
		
python的flex服务端数据接口开发 python 如果给flex提供服务端,需要提供一个网关和一个可供客户端(flex)调用的类.这方面我更加推荐用twisted来写这个网关,因为twisted ...
 - Flex Array 与 ArrayCollection.转自网络
		
1.array作为控件使用 FLEX3写法: <mx:Array id="barname"> <mx:String>Flash</mx:String& ...
 - FLEX各种特效集合
		
http://www.noupe.com/adobe/flex-developers-toolbox-free-components-themes-and-tutorials.html经典中的经典 h ...
 - Flex——Array,ArrayCollection,Vector性能比较(转)
		
测试方法 private function Test():void { ;j<;j++) { trace("插入10000项============"); var t1:in ...
 - 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十三)台风模块
		
config.xml文件的配置如下: <widget label="台风" icon="assets/images/typhoon.png" config ...
 - arcgis api for flex之专题图制作(饼状图,柱状图等)
		
最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过 ...
 - Flex对象的Clone &  Copy浅析
		
在flex中有时候会用到ObjectUtil.clone和ObjectUtil.copy方法.下面是官方API的注释. 克隆指定对象,并返回对该克隆的引用.该克隆使用本机序列化技术生成.这意味着在克隆 ...
 - Flex 扩展combobox 实现复选功能
		
前段时间,老大召唤,给个任务,研究一下flex的combobox控件 实现复选功能(flex自带的combobox控件不可以复选),小兵能力有限,哪里可以扩展呀,网上看了别人写的,发现总是有点瑕疵(关 ...
 
随机推荐
- [MST] Describe Your Application Domain Using mobx-state-tree(MST) Models
			
In this lesson, we introduce the running example of this course, a wishlist app. We will take a look ...
 - HTML5 内联 SVG
			
SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用于定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形 SVG 图像在放大或改变尺寸的情况下其图形 ...
 - html+css实现选项卡功能
			
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
 - django 笔记5 外键 ForeignKey
			
class UsserGroup(models.Model): uid = models.AutoField(primary_key=True) caption = models.CharField( ...
 - Windows安装PHP MongoDB扩展
			
本文将讲述一下在Wamp环境下安装MongoDB扩展的过程,大家可以略作参考 Linux 版本的可以参考之前发布的Linux安装PHP MongoDB扩展 安装环境 系统环境:Windows 7 64 ...
 - Windows 绝赞应用(该网站收集了日常好用的工具和软件)
			
在我们的电脑使用过程中,或多或少的被流氓软件恶心过.流氓软件之所以这么流氓全是靠他那恐怖的用户数量,基本上形成垄断后,各种流氓行为就一点点体现出来了. 我们也可以选择不用,但对流氓软件来说多你一个不多 ...
 - 《剑指offer》调整数组顺序使奇数位于偶数前面
			
一.题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 二.输入描述 ...
 - 洛谷P3402 【模板】可持久化并查集
			
一定注意每一次都要是 $root[cur]=root[cur-1]$,不然进行合并时如果 $a,b$ 在同一集合中就会使 $root[cur]=0$. Code: #include <cstdi ...
 - Haproxy实现web的页面的动静分离
			
一.Haproxy概述: 概述:Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,由C语言编写而成,支持会话保持.七层处理.健康检查.故障修复后自动加载.动静分离.HAProxy ...
 - 今日SGU 5.28
			
SGU 121 题意:给你一张图,问你每个顶点必须有黑白两条边(如果它的边数>=2),问你怎么染色,不行就输出no 收获:你会发现不行的情况只有一个单纯的奇数环的时候,反之我们交替染色即可 #i ...