mx.collections
接口public interface ICollectionView extends IEventDispatcher
实现器 ListCollectionView

ICollectionView 是数据集合的视图。可以修改该视图以显示根据各种条件排序的数据,或显示在不修改基本数据的情况下经过滤镜筛选后的数据。通过 IViewCursor,可以访问集合中的项目。可使用 IViewCursor 接口 insert()remove() 方法修改该集合。

ICollectionView 可以是已从远程位置检索到的数据的视图。针对可能是远程数据的数据实现此接口时,必须处理数据尚不可用的情况,ItemPendingError 会指示这一情况。

IList 接口可替代 ICollectionView 接口。

另请参见

mx.collections.IViewCursor
mx.collections.errors.ItemPendingError
mx.collections.IList
Using Data Providers and Collections


公共属性
 属性定义方
  filterFunction : Function
视图用来消除不符合函数条件的项目的函数。
ICollectionView
  length : int
[只读 (read-only)] 此视图中的项目数。
ICollectionView
  sort : Sort
将应用于 ICollectionView 的排序。
ICollectionView
公共方法
 方法定义方
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
IEventDispatcher
  
返回指示视图是否包含指定对象的信息。
ICollectionView
  
创建使用此视图的新 IViewCursor。
ICollectionView
  
防止视图调度对集合本身和集合中的项目的更改。
ICollectionView
 Inherited
将事件调度到事件流中。
IEventDispatcher
  
启用自动更新。
ICollectionView
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
IEventDispatcher
  
itemUpdated(item:Object, property:Object = null, oldValue:Object = null, newValue:Object = null):void
通知视图,某个项目已更新。
ICollectionView
  
将排序和滤镜应用到视图。
ICollectionView
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
IEventDispatcher
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
IEventDispatcher
事件
 事件 摘要 定义方
  以某种方式更新 ICollectionView 后调度。ICollectionView
属性详细信息
filterFunction属性
filterFunction:Function  [读写]

视图用来消除不符合函数条件的项目的函数。FilterFunction 应具有以下签名:

f(item:Object):Boolean
如果指定的项目应保留在视图中,则返回值为 true

如果滤镜是不支持的滤镜,则在访问此属性时 Flex 会引发错误。必须在设置 filterFunction 属性后调用 refresh() 以更新视图。

注意:ICollectionView 的 Flex 实现将先检索远程位置的所有项目,然后再执行 filter 函数。如果使用分页,请在检索数据之前将该滤镜应用到远程集合。



实现
    public function get filterFunction():Function
    public function set filterFunction(value:Function):void

另请参见

length属性 
length:int  [只读 (read-only)]

此视图中的项目数。0 表示不包含项目,而 -1 表示长度未知。



实现
    public function get length():int
sort属性 
sort:Sort  [读写]

将应用于 ICollectionView 的排序。设置排序不会自动刷新视图,因此必须在设置此属性后调用 refresh() 方法。如果不支持排序,访问此属性时将引发错误。

注意:ICollectionView 的 Flex 实现将先检索远程位置的所有项目,然后再执行排序。如果要对排序后的列表使用分页,请在检索数据之前对远程集合应用排序。



实现
    public function get sort():Sort
    public function set sort(value:Sort):void

另请参见

方法详细信息
contains()方法
public function contains(item:Object):Boolean

返回指示视图是否包含指定对象的信息。与 IViewCursor.find xxx 方法不同,此搜索仅在找到完全与参数匹配的项目时才会成功。如果视图中包含已应用到该视图的滤镜,则即使基本集合确实包含该项目,此方法也会返回 false

参数

item:Object — 要查找的对象。

返回
Boolean — 如果应用滤镜后 ICollectionView 包含该项目,则返回 true,否则返回 false。
createCursor()方法 
public function createCursor():IViewCursor

创建使用此视图的新 IViewCursor。

返回
IViewCursor — 新的 IViewCursor 实现。
disableAutoUpdate()方法 
public function disableAutoUpdate():void

防止视图调度对集合本身和集合中的项目的更改。如果集合中的位置发生变化,还要防止视图更新项目的位置。调用 enableAutoUpdate 后,将适当排列和调度更改。如果发生更新单个项目之外的其它事件,视图最终可能会重新设置。disableAutoUpdate 方法累积执行;要求视图调度并刷新事件的次数与调用 enableAutoUpdate 的次数相同。注意,disableAutoUpdate 仅影响单个视图;其它视图可能根据各个基础检测编辑。

enableAutoUpdate()方法 
public function enableAutoUpdate():void

启用自动更新。有关详细信息,请参阅 disableAutoUpdate

另请参见

itemUpdated()方法 
public function itemUpdated(item:Object, property:Object = null, oldValue:Object = null, newValue:Object = null):void

通知视图,某个项目已更新。如果视图的内容不实现 IPropertyChangeNotifier,则此方法非常有用。如果对此方法的调用包括 property 参数,则视图可以优化其通知机制。否则,它可能选择仅刷新整个视图。

参数

item:Object — 已在视图中更新的项目。
 
property:Object (default = null) — 已更新属性的名称。
 
oldValue:Object (default = null) — 该属性的旧值。(如果属性为 null,则它可以是该项目的旧值。)
 
newValue:Object (default = null) — 该属性的新值。(如果属性为 null,则无需指定它,因为已假定该项目为新值。)

另请参见

refresh()方法 
public function refresh():Boolean

将排序和滤镜应用到视图。ICollectionView 不自动检测对排序或滤镜的更改,因此您必须在设置 sortfilterFunction 属性后调用 refresh() 方法以更新视图。如果 ICollectionView 实现也实现 IMXMLObject 接口,则应从 initialized() 方法调用 refresh() 方法。

如果刷新成功,则返回 true;如果排序尚未完成(例如,项目仍待处理),则返回 false。视图的客户端应等待执行带有 CollectionEventKind.REFRESH kind 属性的 CollectionEvent 事件以确保完成 refresh() 操作。

返回
Boolean — 如果已经完成 refresh(),则为 true;如果未完成 refresh(),则为 false
事件详细信息
collectionChange 事件
事件对象类型: mx.events.CollectionEvent
属性 CollectionEvent.type = mx.events.CollectionEvent.COLLECTION_CHANGE

以某种方式更新 ICollectionView 后调度。

CollectionEvent.COLLECTION_CHANGE 常数可为在集合发生更改时调度的事件定义事件对象的 type 属性值。

事件对象的属性具有下列值。并非所有属性对于各种事件都有意义。有关详细信息,请参阅详细的属性说明。

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
items 对象 Array,其中包含有关受事件影响的项目的信息。此字段的内容取决于事件的类型;有关详细信息,请参阅 items 属性
kind 事件的类型。有效值定义为 CollectionEventKind 类中的常数。
location items 属性中指定的项目在目标集合中的位置。
oldLocation items 属性中指定的项目原来在目标集合中的位置。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
type CollectionEvent.COLLECTION_CHANGE