mx.collections
public class ListCollectionView
继承ListCollectionView Inheritance Proxy Inheritance Object
实现 ICollectionView, IList, IMXMLObject
子类 ArrayCollection, XMLListCollection

ListCollectionView 类可向符合 IList 接口的对象添加 ICollectionView 接口的属性和方法。因此,您可以将此类的对象传递到需要 IListICollectionView 的任何对象。

通过此类,您还可以使用 [ ] 数组表示法访问 getItemAt()setItemAt() 方法。如果您使用 myListCollectionView[index] 之类的代码,Flex 会调用 myListCollectionView 对象的 getItemAt()setItemAt() 方法。

MXML 语法expanded隐藏 MXML 语法

The <mx:ListCollectionView> has the following attributes, which all of its subclasses inherit:

  <mx:ListCollectionView
  Properties
  filterFunction="null"
  list="null"
  sort="null"
  Events
  collectionChange="No default"
  />
  


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  filterFunction : Function
视图用来消除不符合函数条件的项目的函数。
ListCollectionView
  length : int
[只读 (read-only)] 此视图中的项目数。
ListCollectionView
  list : IList
此集合视图所封装的 IList。
ListCollectionView
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  sort : Sort
将应用于 ICollectionView 的排序。
ListCollectionView
受保护的属性
 属性定义方
  localIndex : Array
视图经过排序或过滤后,localIndex 属性会在排序或过滤后(已排序、已缩减)的视图中包含按排序顺序显示的项目的数组。
ListCollectionView
公共方法
 方法定义方
  
ListCollectionView 构造函数。
ListCollectionView
  
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
ListCollectionView
  
向列表末尾添加指定项目。
ListCollectionView
  
addItemAt(item:Object, index:int):void
在指定的索引处添加项目。
ListCollectionView
  
返回指示视图是否包含指定对象的信息。
ListCollectionView
  
创建使用此视图的新 IViewCursor。
ListCollectionView
  
防止视图调度对集合本身和集合中的项目的更改。
ListCollectionView
  
将事件调度到事件流中。
ListCollectionView
  
启用自动更新。
ListCollectionView
  
getItemAt(index:int, prefetch:int = 0):Object
获取指定索引处的项目。
ListCollectionView
  
如果项目位于列表中(这样的话 getItemAt(index) == item),则返回该项目的索引。
ListCollectionView
  
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
ListCollectionView
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
如果 ListCollectionView 是使用 MXML 标签创建的,则由 MXML 编译器自动调用。
ListCollectionView
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
itemUpdated(item:Object, property:Object = null, oldValue:Object = null, newValue:Object = null):void
通知视图,某个项目已更新。
ListCollectionView
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
将排序和滤镜应用到视图。
ListCollectionView
  
删除列表中的所有项目。
ListCollectionView
  
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
ListCollectionView
  
删除指定索引处的项目并返回该项目。
ListCollectionView
  
setItemAt(item:Object, index:int):Object
在指定的索引处放置项目。
ListCollectionView
 Inherited
设置循环操作动态属性的可用性。
Object
  
返回与 IList 实现的填充顺序相同的 Array。
ListCollectionView
  
将此视图的内容输出到字符串并返回该字符串。
ListCollectionView
 Inherited
返回指定对象的原始值。
Object
  
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
ListCollectionView
事件
 事件 摘要 定义方
  以某种方式更新 ICollectionView 后调度。ListCollectionView
属性详细信息
filterFunction属性
filterFunction:Function  [读写]

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

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

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

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

此属性可用作数据绑定的源。修改此属性后,将调度 filterFunctionChanged 事件。



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

另请参见

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

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

此属性可用作数据绑定的源。修改此属性后,将调度 collectionChange 事件。



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

此集合视图所封装的 IList。

此属性可用作数据绑定的源。修改此属性后,将调度 listChanged 事件。



实现
    public function get list():IList
    public function set list(value:IList):void
localIndex属性 
protected var localIndex:Array

视图经过排序或过滤后,localIndex 属性将包含在排序或过滤后(已排序、已缩减)的视图中按排序顺序显示的所有项目的数组。ListCollectionView 类使用此属性访问该视图中的项目。localIndex 属性永远不能包含源中没有的任何内容,但可以不将源中的所有内容都包含在内。如果没有进行排序,则此属性为 null

sort属性 
sort:Sort  [读写]

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

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

此属性可用作数据绑定的源。修改此属性后,将调度 sortChanged 事件。



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

另请参见

构造函数详细信息
ListCollectionView()构造函数
public function ListCollectionView(list:IList = null)

ListCollectionView 构造函数。

参数
list:IList (default = null) — 此 ListCollectionView 要封装的 IList。
方法详细信息
addEventListener()方法
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。可以为特定类型的事件、阶段和优先级在显示列表的所有节点上注册事件侦听器。

成功注册一个事件侦听器后,无法通过额外调用 addEventListener() 来更改其优先级。若要更改侦听器的优先级,必须先调用 removeEventListener()。然后,可以使用新的优先级再次注册该侦听器。

注册该侦听器后,如果继续调用具有不同 typeuseCapture 值的 addEventListener(),则会创建单独的侦听器注册。例如,如果首先注册 useCapture 设置为 true 的侦听器,则该侦听器只在捕获阶段进行侦听。如果您使用同一个侦听器对象再次调用 addEventListener(),但 useCapture 设置为 false,则您将有两个单独的侦听器:一个在捕获阶段侦听,另一个在目标阶段和冒泡阶段侦听。

不能只为目标阶段或冒泡阶段注册事件侦听器。这些阶段在注册期间是成对出现的,因为冒泡阶段只适用于目标节点的始祖。

如果不再需要某个事件侦听器,可调用 EventDispatcher.removeEventListener() 删除它;否则会产生内存问题。由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。

复制 EventDispatcher 实例时并不复制其中附加的事件侦听器。(如果新近创建的节点需要一个事件侦听器,必须在创建该节点后附加该侦听器。) 但是,如果移动 EventDispatcher 实例,则其中附加的事件侦听器也会随之移动。

如果在正在处理事件的节点上注册事件侦听器,则不会在当前阶段触发事件侦听器,但会在事件流的稍后阶段触发,如冒泡阶段。

如果从正在处理事件的节点中删除事件侦听器,则该事件侦听器仍由当前操作触发。删除事件侦听器后,决不会再次调用该事件侦听器(除非再次注册以备将来处理)。

参数

type:String — 事件的类型。
 
listener:Function — 处理事件的侦听器函数。此函数必须接受事件对象作为其唯一的参数,并且不能返回任何结果,如下面的示例所示:

function(evt:Event):void

函数可以有任何名称。
 
useCapture:Boolean (default = false) — 确定侦听器是运行于捕获阶段、目标阶段还是冒泡阶段。如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。如果 useCapturefalse,则侦听器只在目标或冒泡阶段处理事件。若要在所有三个阶段都侦听事件,请调用两次 addEventListener(),一次将 useCapture 设置为 true,第二次再将 useCapture 设置为 false
 
priority:int (default = 0) — 事件侦听器的优先级。优先级由一个 32 位整数指定。数字越大,优先级越高。优先级为 n 的所有侦听器会在优先级为 n-1 的侦听器之前处理。如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。默认优先级为 0。
 
useWeakReference:Boolean (default = false) — 确定对侦听器的引用是强引用,还是弱引用。强引用(默认值)可防止您的侦听器被当作垃圾回收。弱引用则没有此作用。

类级别成员函数不属于垃圾回收的对象,因此可以对类级别成员函数将 useWeakReference 设置为 true 而不会使它们受垃圾回收的影响。如果对作为嵌套内部函数的侦听器将 useWeakReference 设置为 true,则该函数将被作为垃圾回收并且不再是永久函数。如果创建对该内部函数的引用(将该函数保存到另一个变量中),则该函数将不作为垃圾回收并仍将保持永久。

addItem()方法 
public function addItem(item:Object):void

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

参数

item:Object — 要添加的项目。

addItemAt()方法 
public function addItemAt(item:Object, index:int):void

在指定的索引处添加项目。任何大于已添加项目的索引的项目索引都会增加 1。如果指定索引小于零或者大于列表长度,则会引发 RangeError。

参数

item:Object — 要置于索引处的项目。
 
index:int — 要放置项目的索引位置。

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 仅影响单个视图;其它视图可能根据各个基础检测编辑。

另请参见

dispatchEvent()方法 
public function dispatchEvent(event:Event):Boolean

将事件调度到事件流中。事件目标是对其调用 dispatchEvent() 的 EventDispatcher 对象。

参数

event:Event — 调度到事件流中的事件对象。

返回
Boolean — 除非对事件调用 preventDefault()(在这种情况下,它返回 false),否则值为 true
enableAutoUpdate()方法 
public function enableAutoUpdate():void

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

另请参见

getItemAt()方法 
public function getItemAt(index:int, prefetch:int = 0):Object

获取指定索引处的项目。

参数

index:int — 要从中检索项目的列表中的索引。
 
prefetch:int (default = 0) — 一个 int,指示当项目不是本地项目时,在请求期间要获取的项目的方向和编号。

返回
Object — 此索引处的项目;如果没有项目,则为 null
getItemIndex()方法 
public function getItemIndex(item:Object):int

如果项目位于列表中(这样的话 getItemAt(index) == item),则返回该项目的索引。

注意:与 IViewCursor.findxxx() 方法不同,getItemIndex() 方法不能在要搜索的项目中使用只带字段子集的参数;此方法始终搜索与输入参数完全匹配的项目。

参数

item:Object — 要查找的项目。

返回
int — 该项目的索引;如果该项目不在列表中,则为 -1。
hasEventListener()方法 
public function hasEventListener(type:String):Boolean

检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。这样,您就可以确定 EventDispatcher 对象在事件流层次结构中的哪个位置改变了对事件类型的处理。若要确定特定事件类型是否确实会触发事件侦听器,请使用 IEventDispatcher.willTrigger()

hasEventListener()willTrigger() 的区别是:hasEventListener() 只检查它所属的对象,而 willTrigger() 检查整个事件流以查找由 type 参数指定的事件。

参数

type:String — 事件的类型。

返回
Boolean — 如果指定类型的侦听器已注册,则值为 true;否则,值为 false
initialized()方法 
public function initialized(document:Object, id:String):void

如果 ListCollectionView 是使用 MXML 标签创建的,则由 MXML 编译器自动调用。如果通过 ActionScript 创建 ListCollectionView,则必须调用传递给 MXML 文档的此方法,并将 id 设置为 null

参数

document:Object — 包含此 ListCollectionView 的 MXML 文档。
 
id:String — 已忽略。

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
removeAll()方法 
public function removeAll():void

删除列表中的所有项目。

removeEventListener()方法 
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void

从 EventDispatcher 对象中删除侦听器。如果没有向 EventDispatcher 对象注册任何匹配的侦听器,则对此方法的调用没有任何效果。

参数

type:String — 事件的类型。
 
listener:Function — 要删除的侦听器对象。
 
useCapture:Boolean (default = false) — 指出是否为捕获阶段或目标阶段和冒泡阶段注册了侦听器。如果为捕获阶段以及目标和冒泡阶段注册了侦听器,则需要对 removeEventListener() 进行两次调用才能将这两个侦听器删除:一次调用将 useCapture 设置为 true,另一次调用将 useCapture 设置为 false

removeItemAt()方法 
public function removeItemAt(index:int):Object

删除指定索引处的项目并返回该项目。原先位于此索引之后的所有项目的索引现在都向前移动一个位置。

参数

index:int — 要从中删除项目的索引。

返回
Object — 被删除的项目。
setItemAt()方法 
public function setItemAt(item:Object, index:int):Object

在指定的索引处放置项目。如果此索引处已存在项目,新项目将替代该项目,并返回该项目。

参数

item:Object — 要在指定索引处放置的新项目。
 
index:int — 要放置项目的索引位置。

返回
Object — 被替换的项目;如果没有项目,则为 null
toArray()方法 
public function toArray():Array

返回与 IList 实现的填充顺序相同的 Array。此方法可能会引发 ItemPendingError。

返回
Array — 数组。
toString()方法 
public function toString():String

将此视图的内容输出到字符串并返回该字符串。

返回
String — 此视图的内容(字符串形式)。
willTrigger()方法 
public function willTrigger(type:String):Boolean

检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。将指定类型的事件调度给此 EventDispatcher 对象或其任一后代时,如果在事件流的任何阶段触发了事件侦听器,则此方法返回 true

hasEventListener()willTrigger() 的区别是:hasEventListener() 只检查它所属的对象,而 willTrigger() 检查整个事件流以查找由 type 参数指定的事件。

参数

type:String — 事件的类型。

返回
Boolean — 如果将会触发指定类型的侦听器,则值为 true;否则,值为 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