跳到主要内容

eui.ArrayCollection

   eui

   public class ArrayCollection

继承    eui.ArrayCollection → egret.EventDispatcheregret.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
  • 参数

addItem()

public addItem(item:any):void

向列表末尾添加指定项目。等效于 addItemAt(item, length)

  • 支持版本:eui 1.0
  • 运行平台:Web,Native
  • 参数
    • item:any - 要被添加的项。

addItemAt()

public addItemAt(item:any,index:number):void

在指定的索引处添加项目。任何大于已添加项目的索引的项目索引都会增加 1。如果指定的索引比0小或者比最大长度要大。则会抛出1007异常。

  • 支持版本:eui 1.0
  • 运行平台:Web,Native
  • 参数
    • item:any - 要添加的项
    • index:number - 要添加的指定索引位置

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

替换在指定索引处的项目,并返回该项目。

  • 支持版本:eui 1.0

  • 运行平台:Web,Native

  • 参数

    • item:any - 要在指定索引放置的新的项。
    • index:number - 要被替换的项的索引位置。
  • 返回:被替换的项目,如果没有该项则返回

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;

}

}

}