IList、ICollectionView与IViewCursor,这是Flex提供的三个接口,它们都位于mx.collections包下,作用与集合密切相关。
按顺序组织的项目的集合。提供基于索引的访问和处理方法。
IList 可以是从远程位置检索到的数据的视图。在对可能位于远程位置的集合进行写入时,必须处理数据尚不可用的情况,ItemPendingError 会指示这一情况。
ICollectionView 可以替代 IList。
get length():int
function addItem(item:Object):void
function addItemAt(item:Object, index:int):void
function getItemAt(index:int, prefetch:int = 0):Object
function getItemIndex(item:Object):int;
function itemUpdated(item:Object, property:Object = null, oldValue:Object = null, newValue:Object = null):void
function removeAll():void
function removeItemAt(index:int):Object;
function setItemAt(item:Object, index:int):Object;
function toArray():Array;
ICollectionView 是数据集合的视图。可以修改该视图以显示根据各种条件排序的数据,或显示在不修改基本数据的情况下经过滤镜筛选后的数据。通过 IViewCursor,可以访问集合中的项目。可使用 IViewCursor 接口 insert() 和 remove() 方法修改该集合。
ICollectionView 可以是已从远程位置检索到的数据的视图。针对可能是远程数据的数据实现此接口时,必须处理数据尚不可用的情况,ItemPendingError 会指示这一情况。
IList 接口可替代 ICollectionView 接口。
function get length():int;
function get filterFunction():Function;
function set filterFunction(value:Function):void;
function get sort():ISort;
function set sort(value:ISort):void;
function createCursor():IViewCursor;
function contains(item:Object):Boolean;
function disableAutoUpdate():void;
function enableAutoUpdate():void;
function itemUpdated(item:Object, property:Object = null,oldValue:Object = null, newValue:Object = null):void;
function refresh():Boolean;
IViewCursor
这个接口的功能更强大,它提供了完整的指针功能,可以对数据进行查找find()、定位seek()操作,可以利用书签保存当前的操作位置。同时,它也可以使用insert()、remove()等方法来修改原始数据。
定义双向枚举集合视图的接口。此光标提供查找、搜索和标记为书签的功能,还提供修改方法插入和删除。首次从视图检索光标(通常使用 ICollectionViewcreateCursor()
方法)时,current
属性的值应是该视图中的第一个项目,除非视图为空。
function get afterLast():Boolean;
function get beforeFirst():Boolean;
function get bookmark():CursorBookmark;
function get current():Object;
function get view():ICollectionView;
function findAny(values:Object):Boolean;
function findFirst(values:Object):Boolean;
function findLast(values:Object):Boolean;
function insert(item:Object):void;
function moveNext():Boolean;
function movePrevious():Boolean;
function remove():Object;
function seek(bookmark:CursorBookmark, offset:int = 0, prefetch:int = 0):void;
这两个类都是用于集合的,它们都实现了IList和ICollectionView接口,因此可以直接使用这两个接口的所有方法。不过,如果要使用书签等功能,就需要用createCursor()方法来创建一个IViewCursor的实例来实现。