`
Callan
  • 浏览: 736057 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex 集合(ArrayCollection)

    博客分类:
  • Flex
阅读更多

集合是ActionScript 中功能强大的基于索引的数组组件,添加了如对内容进行排序等功能,
操作数组的读取位置,创建经过排序的数组视图。集合也能通知其任意事件监听器监听其数
据是否改变,以及任何数据项被添加到源数组时可执行自定义逻辑。当数据改变时可通知其
监听器,这是集合的新功能,叫数据绑定,还有就是允许DataGrid 和List 组件对其内容进
行排序和过滤。集合是使用数据驱动控件以及从数据库返回的服务器端服务的重要内容。
经常被使用的两个集合类型是ArrayCollection 类XMLListCollection 类。ArrayCollection 是
Array 的包装类,提供更方便的如添加和移除数据项以及能够创建游标启用要轻松地存储数
组中的最后读取的位置等方法。而XMLListCollection 是XML 对象的包装类,提供的功能
有:根据索引访问数据,添加新对象以及游标等方法。XMLListCollection 对于处理XML 对
象以及经常需要解析XML 为数组时特别有用。

 

使用addItemAt 或addItem 方法插入对象到ArrayCollection ,
getItemIndex 或contains 方法用于检测数据项是否已存在于数组中,而ArrayCollection 的sort
属性是对ArrayCollection 排序以及通过某个字段决定接收第一个或最后一个数据。

 

 

<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 方法代替上面的方法:

 

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:

 

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 方法:

 

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;
}

 

分享到:
评论
6 楼 Jack-chen 2010-03-26  
[url][/url]
引用
引用
[img][/img][url][/url][flash=200,200][/flash]
引用
[u][/u][i][/i][b][/b]
5 楼 Jack-chen 2010-03-26  
Jack-chen 写道
   

4 楼 Jack-chen 2010-03-26  
怎么到后台得哦
3 楼 Jack-chen 2010-03-26  
   
2 楼 Jack-chen 2010-03-26  
   
1 楼 Jack-chen 2010-03-26  
谢谢你哦,,,我正好需要 

相关推荐

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

    总之,ArrayCollection在处理数据集合时提供了强大的功能,包括查找最大值和最小值以及排序。通过合理利用这些特性,我们可以有效地管理和操作数据,从而提升应用程序的用户体验。在实际开发中,理解并熟练运用...

    用ArrayCollection当做flex中Tree控件的DataProvider

    本文将详细探讨如何使用`ArrayCollection`作为Flex中的`Tree`控件的数据提供者,以替代通常使用的XML数据源。 首先,让我们理解`ArrayCollection`的概念。`ArrayCollection`是Flex中的一个类,它继承自`...

    flex charts 图形集合实例(读取XML)

    在“flex charts 图形集合实例(读取XML)”中,我们探讨的是如何使用Flex Charts来展示数据,并且这些数据是从XML文件中读取的。XML因其结构化和可扩展性,常被用作数据交换格式。以下是对这一主题的详细说明: 1....

    ArrayCollection不完全绑定

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

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

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

    flex实时更新曲线图

    例如,当新数据到来时,需要触发一个事件,ActionScript代码监听到这个事件后,将新数据添加到数据集合,进而更新曲线图。 综上所述,"flex实时更新曲线图"是一个结合了Flex的图表组件、ActionScript编程、MXML布局...

    flex组件LIST使用

    `List`组件是Flex中显示数据集合的主要手段之一。它能够根据传入的数据源自动创建相应的项视图。在示例中,`List`组件通过`dataProvider`属性绑定到了`myDP`,这意味着它将自动根据`myDP`中的数据生成列表项。此外,...

    Flex 全选效果 批量删除

    在Flex中,数据通常绑定到一个数据集合,如ArrayCollection。当用户选择多个条目后,我们需要收集这些被选中的条目的标识,然后在后台处理删除操作。可以创建一个临时集合来存储选中的条目ID,当用户触发删除操作时...

    Flex4之DataGrid四个的示例【客户端和服务器端】

    例如,你可以使用`JSONArray`和`JSONObject`来表示和操作JSON数据,便于与Flex中的ArrayCollection进行数据交换。 总结,Flex4的DataGrid组件在客户端和服务器端的应用涉及到数据的获取、解析和展示,而JSON作为一...

    flex显示数据库数据

    ArrayCollection是Flex中的一个动态数组,它可以被用作各种UI组件的数据源。 集成流程大致如下: 1. 配置Myeclipse 9.0:确保已经安装了Flex SDK和BlazeDS插件,这样可以在IDE内创建Flex项目并与Java项目一起工作...

    Flex 表格单元格合并

    DataGrid是Adobe Flex提供的一个功能强大的组件,用于显示数据集合,并且支持排序、分页、选择等多种功能。它的列可以自定义,能够绑定到各种数据源,如ArrayCollection或XMLListCollection。 单元格合并通常涉及到...

    Sample-Flex4-TabBar

    2. dataProvider:提供选项卡数据的集合,可以是Array、ArrayCollection或其他数据源。 3. allowMultipleSelection:控制是否允许多个TabItem同时被选中。 4. tabFactory:用于创建自定义TabItem实例的函数,实现...

    Flex Tree 中Checkbox

    为了获取Checkbox的选中状态,我们需要监听Checkbox的事件,并在事件处理器中更新存储节点选择状态的数据结构,例如一个ArrayList或ArrayCollection。 4. **数据模型与视图**:在Flex中,数据模型与视图是分离的。...

    Flex 实时曲线图(定时获取后台数据)

    通过上述分析,我们了解到这个Flex实时曲线图的核心实现是利用`setInterval`定时器不断向`ArrayCollection`数据集合中添加新生成的数据,并通过`mx:LineChart`组件将这些数据可视化展示出来。这种方式简单而有效,...

    Flex DataGird Add RadioButton

    在Flex中,DataGrid通常用于显示数据集中的数据,如数据库记录或者数组集合。而要实现DataGrid中的每一行都有一个单选按钮,这通常是为了实现用户只能选择一行数据的操作。这样的功能在数据筛选、编辑或操作中非常...

    flex 经典教程下载

    2. 掌握MXML和ActionScript的语法,包括基本控件、集合对象和字符串操作。 3. 应用动态效果,如移动、旋转和放大,以及创建自定义效果。 4. 使用定时器和事件处理,包括鼠标和键盘事件,编写交互式应用。 5. 了解...

    flex动态生成datagrid表头

    在Flex开发中,数据网格(DataGrid)是一种常用的组件,用于显示二维表格数据。它能够灵活地处理大量数据,并提供排序、筛选等多种功能。而动态生成DataGrid表头则是在运行时根据数据源来创建列,这在处理未知数量或...

    flex datagrid 前台 分页

    1. **数据管理**:你需要有效地管理从服务器获取的大量数据,例如使用ArrayCollection或Vector存储数据,这些数据结构支持数据绑定并提供了数据操作的方法。 2. **性能优化**:由于所有数据都在客户端,需要注意内存...

Global site tag (gtag.js) - Google Analytics