eui.ArrayCollection
包 eui
类 public class ArrayCollection
继承 eui.ArrayCollection → egret.EventDispatcher → egret.HashObject
ArrayCollection 类是数组的集合类数据结构包装器,可使用ICollection
接口的方法和属性对其进行访问和处理。使用这种数据结构包装普通数组,能在数据源发生改变的时候主动通知视图刷新变更数据项。
公共属性
属性 |
---|
length : number 此集合中的项目数 |
source : any[] 数据源通常情况下请不要直接调用Array的方法操作数据源,否则对应的视图无法收到数据改变的通知 |
公共方法
方法 |
---|
ArrayCollection(source:any[]) 构造函数 |
addItem(item:any):void 向列表末尾添加指定项目 |
addItemAt(item:any,index:number):void 在指定的索引处添加项目 |
getItemAt(index:number):any 获取指定索引处的项目 |
getItemIndex(item:any):number 如果项目位于列表中,返回该项目的索引 |
itemUpdated(item:any):void 通知视图,某个项目的属性已更新 |
refresh():void 在对数据源进行排序或过滤操作后可以手动调用此方法刷新所有数据,以更新视图 |
removeAll():void 删除列表中的所有项目 |
removeItemAt(index:number):any 删除指定索引处的项目并返回该项目 |
replaceAll(newSource:any[]):void 用新数据源替换原始数据源,此方法与直接设置source不同,它不会导致目标视图重置滚动位置 |
replaceItemAt(item:any,index:number):any 替换在指定索引处的项目,并返回该项目 |
事件
Events |
---|
eui.CollectionEvent.COLLECTION_CHANGE 当 ArrayCollection 更新的的时候会派发此事件。 |
属性详细信息
length
length : number
- 支持版本:eui 1.0
- 运行平台:Web,Native
此集合中的项目数。0 表示不包含项目。
source
source : any[]
- 支持版本:eui 1.0
- 运行平台:Web,Native
数据源通常情况下请不要直接调用Array的方法操作数据源,否则对应的视图无法收到数据改变的通知。通常都是通过ICollection的接口方法来查看数据。若对数据源进行了修改,请手动调用refresh()方法刷新数据。
方法详细信息
ArrayCollection()
public ArrayCollection(source:any[])
构造函数。用指定的原始数组创建一个 ArrayCollection 实例。
- 支持版本:eui 1.0
- 运行平台:Web,Native
- 参数
- source:any[]
addItem()
向列表末尾添加指定项目。等效于 addItemAt(item, length)
。
- 支持版本:eui 1.0
- 运行平台:Web,Native
- 参数
- item:any - 要被添加的项。
addItemAt()
public addItemAt(item:any,index:number):void
在指定的索引处添加项目。任何大于已添加项目的索引的项目索引都会增加 1。如果指定的索引比0小或者比最大长度要大。则会抛出1007异常。
getItemAt()
public getItemAt(index:number):any
获取指定索引处的项目。
支持版本:eui 1.0
运行平台:Web,Native
参数
- index:number - 要得到的项的指定位置。
返回:在索引位置的项,如果没有该项则返回null。
getItemIndex()
public getItemIndex(item:any):number
如果项目位于列表中,返回该项目的索引。否则返回-1。
支持版本:eui 1.0
运行平台:Web,Native
参数
- item:any - 要查找的项。
返回:项的索引,如果该项没有在列表中将返回-1.
itemUpdated()
public itemUpdated(item:any):void
通知视图,某个项目的属性已更新。
- 支持版本:eui 1.0
- 运行平台:Web,Native
- 参数
- item:any - 视图中需要被更新的项。
refresh()
public refresh():void
在对数据源进行排序或过滤操作后可以手动调用此方法刷新所有数据,以更新视图。ArrayCollection 不会自动检原始数据进行了改变,所以你必须调用refresh()
方法去更新显示。
- 支持版本:eui 1.0
- 运行平台:Web,Native
removeAll()
public removeAll():void
删除列表中的所有项目。
- 支持版本:eui 1.0
- 运行平台:Web,Native
removeItemAt()
public removeItemAt(index:number):any
删除指定索引处的项目并返回该项目。原先位于此索引之后的所有项目的索引现在都向前移动一个位置。
支持版本:eui 1.0
运行平台:Web,Native
参数
- index:number - 要被移除的项的索引。
返回:被移除的项。
replaceAll()
public replaceAll(newSource:any[]):void
用新数据源替换原始数据源,此方法与直接设置source不同,它不会导致目标视图重置滚动位置。
- 支持版本:eui 1.0
- 运行平台:Web,Native
- 参数
- newSource:any[] - 新数据。
replaceItemAt()
public replaceItemAt(item:any,index:number):any
替换在指定索引处的项目,并返回该项目。
null
示例
/*
* 以下示例使用 ArrayCollectionExample 类来说明如何使用数组的集合类数据结构包装器
*/
class ArrayCollectionExample extends egret.Sprite {
constructor() {
super();
var arr = [2, 1, 3];
var arrayCollection = new eui.ArrayCollection();
arrayCollection.source = arr;
arrayCollection.addEventListener(eui.CollectionEvent.COLLECTION_CHANGE, this.onCollectionChange, this);
arrayCollection.addItem(5);//add
arrayCollection.addItemAt(6, 1);//add
arrayCollection.source.sort();
arrayCollection.refresh();//refersh
arrayCollection.removeItemAt(2);//remove
arrayCollection.removeAll();//remove
arrayCollection.source = [1, 2, 3];//reset
arrayCollection.replaceItemAt(7, 1);//replace
arrayCollection.source[1] = 8;
arrayCollection.itemUpdated(1);//update
}
private onCollectionChange(e: eui.CollectionEvent) {
switch (e.kind) {
case eui.CollectionEventKind.ADD:
egret.log("arrayCollection add" + " " + e.currentTarget.source + " " + e.location);
break;
case eui.CollectionEventKind.REFRESH:
egret.log("arrayCollection refersh" + " " + e.currentTarget.source + " " + e.location);
break;
case eui.CollectionEventKind.REMOVE:
egret.log("arrayCollection remove" + " " + e.currentTarget.source + " " + e.location);
break;
case eui.CollectionEventKind.REPLACE:
egret.log("arrayCollection replace" + " " + e.currentTarget.source + " " + e.location);
break;
case eui.CollectionEventKind.RESET:
egret.log("arrayCollection reset" + " " + e.currentTarget.source + " " + e.location);
break;
case eui.CollectionEventKind.UPDATE:
egret.log("arrayCollection update" + " " + e.currentTarget.source + " " + e.location);
break;
}
}
}