當多個ValueObject儲存到ArrayCollection變數後,我們如果要尋找某個
ValueObject是否存在此Collection中時,除了可以使用foreach的方式來比對出每個item是否符合我們要找尋的條件,其實您可以使用ArrayCollection所提供的cursor功能。要使用此功能的幾個重點步驟如下:
步驟一:
宣告一個IViewCursor介面的變數 (EX: var cursor:IViewCursor;)
步驟二:
使用ArrayCollection.createCursor()方法(傳回IViewCursor型態變數,此變數指定給步驟一宣告的變數)。
步驟三:
執行自訂的ArrayCollection的排序。(利用指定排序的欄位,當成尋找條件)
步驟四:
設定cursor要找尋的方式,並且將要找尋的物件當成參數傳入,比方要找出第一個符合條件
的ValueObject時,可以寫成:cursor.findFirst(obj)
參數中的obj表示要找尋的valueObject,當有找到的時候,會傳回true,反之傳回false。
步驟五:如果有找到(傳回true),則利用cursor.current可以取回此ValueObject。
import mx.collections.IViewCursor;
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
[Bindable]
private var ac:ArrayCollection=new ArrayCollection();
private function ini():void
{
var obj1:Object=new Object()
obj1.name='oscar';
obj1.age=30;
obj1.country='台灣';
ac.addItem(obj1);
var obj2:Object=new Object()
obj2.name='bob';
obj2.age=55;
obj2.country='台灣';
ac.addItem(obj2);
var obj3:Object=new Object()
obj3.name='mary';
obj3.age=30;
obj3.country='香港';
ac.addItem(obj3);
var obj4:Object=new Object()
obj4.name='john';
obj4.age=25;
obj4.country='香港';
ac.addItem(obj4);
}
private function mySort1():void
{
var sortObj:Sort=new Sort();
var sortField:SortField=new SortField("age",true,false);
sortObj.fields=new Array(sortField);
ac.sort=sortObj;
ac.refresh();
}
private function mySort2():void
{
var sort:Sort=new Sort();
var f1:SortField=new SortField("age",true,false);
var f2:SortField=new SortField("country",true,false);
var f3:SortField=new SortField("name",true,false);
var ary:Array=new Array();
ary.push(f2);
ary.push(f1);
ary.push(f3);
sort.fields=ary
this.ac.sort=sort;
ac.refresh();
}
private function myCursor(event:MouseEvent):void
{
var cursor:IViewCursor;
var obj:Object=new Object();
cursor=ac.createCursor();
mySort2();
obj.name='mary';
obj.age=30;
obj.country='香港';
if (cursor.findFirst(obj))
{
var insertObj:Object=new Object();
insertObj.name='BOB';
insertObj.age=28;
insertObj.country='香港';
cursor.insert(insertObj);
Alert.show(cursor.current.name + '\n' + cursor.current.age + '\n' + cursor.current.country);
}
else
{
Alert.show('Can not found');
}
}
沒有留言:
張貼留言