Flex集合(ArayCollection)
3604 ワード
集合は、アクションScriptの機能が強いインデックスベースの配列構成要素であり、コンテンツを並べ替えるなどの機能を追加し、配列の読み取り位置を操作し、並べ替えられた配列ビューを作成します.セットは、任意のイベントモニターに対して、データが変更されたかどうかを通知することもできます.また、任意のデータ項目がソース配列に追加された場合、カスタムロジックが実行されます.データが変更されると、そのモニターに通知してもいいです.これはセットの新しい機能です.データバインディングといいます.また、DataGridとListコンポーネントにコンテンツの並べ替えとフィルタリングを許可します.セットは、データ駆動コントロールを使用して、データベースから戻ってくるサーバ端末サービスの重要な内容です.よく使われる2つの集合タイプは、アラーCollection類XMLList Collection類である.ArayCollectionは、Arayの包装類であり、データ項目の追加や除去など、より便利なものを提供し、ラベルの作成を可能にし、配列中の最後の読み取りの位置を簡単に記憶するなどの方法を提供しています.XMLList CollectionはXMLオブジェクトの包装類であり、インデックスによってデータにアクセスし、新しいオブジェクトを追加したり、泳いだりする方法があります.XMLList Collectionは、XMLオブジェクトの処理及び常に解析XMLを配列として必要とする場合に特に有用である.
addItemAtまたはaddItem方法を使用して、オブジェクトをArayCollectionに挿入し、getItemIndexまたはcontains方法を使用して、データ項目がすでに配列中に存在しているかどうかを検出し、ArayCollectionのsort属性は、ArayCollectionの順序付けであり、あるフィールドを通じて、最初または最後のデータの受信を決定する.
Sortオブジェクトは、このArayCollectionのすべての要素を検索するためのfindItem方法を提供する.プロトタイプは、public function findItem(items:Aray,values:Object,mode:String,return Insertion Index:Boolean=false,compreFunct:Funct=null):intValueパラメータは、属性と必要な値を含む任意の対象とすることができます.Mode文字列はSort.ANY_とすることができます.INDEX_MODEは、任意のマッチングインデックスを返すという意味で、Sort.FIRST_INDEX_MODEは最初のマッチインデックスを返します.Sort.LAST_INDEX_MODEは最後のマッチするインデックスを返します.return Insertion Indexパラメータは、この方法がvaluesパラメータによって識別された項目が見つからない場合、このパラメータがtrueである場合、findItem()方法はこれらの値の挿入点、すなわち順序においてこの項目を挿入するべきであることを示しています.compreFunctionは、この項目を検索するための比較演算子関数を設定します.上の方法の代わりに、SortオブジェクトのfindItemを使用します.
まず、Sortを作成し、SortFieldオブジェクトの配列をfieldsに渡す.これらのSortFieldオブジェクトに含まれる文字列は、各ArayCollection要素が並べ替えに使用される属性である.各オブジェクトのage属性を並べ替える場合、Sortオブジェクトを作成し、SortFieldを転送し、並べ替えフィールドをageとして設定します.
フィルタリング
ArayCollectionデータをフィルタリングし、フィルタの不一致を除去する結果を設定します.
プロトタイプはfunction(item:Object):Booleanの関数をアラーCollectionのfilter属性に渡す.true表現の値がアーラCollectionに残っている場合、falseに戻ってその値が除去されることを表す.
filterFunction属性は、ListCollection View類によって定義されており、アラーCollectionの父である.フィルタ関数がListCollection Viewから継承された任意のサブクラスに渡されると、ここはArayCollectionオブジェクトであり、フィルタを適用した後、refresh方法を呼び出さなければならない.
addItemAtまたはaddItem方法を使用して、オブジェクトをArayCollectionに挿入し、getItemIndexまたはcontains方法を使用して、データ項目がすでに配列中に存在しているかどうかを検出し、ArayCollectionのsort属性は、ArayCollectionの順序付けであり、あるフィールドを通じて、最初または最後のデータの受信を決定する.
<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;
private var coll:ArrayCollection;
private function init():void {
coll = new ArrayCollection(
[{name:"Martin Foo", age:25},
{name:"Joe Bar", age:15},
{name:"John Baz", age:23}]);
}
, addItemAt :
private function addItem():void {
coll.addItemAt({name:"James Fez", age:40}, 0);
}
]]>
</mx:Script>
Sortオブジェクトは、このArayCollectionのすべての要素を検索するためのfindItem方法を提供する.プロトタイプは、public function findItem(items:Aray,values:Object,mode:String,return Insertion Index:Boolean=false,compreFunct:Funct=null):intValueパラメータは、属性と必要な値を含む任意の対象とすることができます.Mode文字列はSort.ANY_とすることができます.INDEX_MODEは、任意のマッチングインデックスを返すという意味で、Sort.FIRST_INDEX_MODEは最初のマッチインデックスを返します.Sort.LAST_INDEX_MODEは最後のマッチするインデックスを返します.return Insertion Indexパラメータは、この方法がvaluesパラメータによって識別された項目が見つからない場合、このパラメータがtrueである場合、findItem()方法はこれらの値の挿入点、すなわち順序においてこの項目を挿入するべきであることを示しています.compreFunctionは、この項目を検索するための比較演算子関数を設定します.上の方法の代わりに、SortオブジェクトのfindItemを使用します.
private function checkExistence():int {
var sort:Sort = new Sort();
return sort.findItem(coll.source,
{name:nameTI.text, age:Number(ageTI.text)},
Sort.ANY_INDEX_MODE);
}
まず、Sortを作成し、SortFieldオブジェクトの配列をfieldsに渡す.これらのSortFieldオブジェクトに含まれる文字列は、各ArayCollection要素が並べ替えに使用される属性である.各オブジェクトのage属性を並べ替える場合、Sortオブジェクトを作成し、SortFieldを転送し、並べ替えフィールドをageとして設定します.
private function getOldest():void {
var sort:Sort = new Sort();
sort.fields = [new SortField("age", false)];
coll.sort = sort;
coll.refresh();
trace(coll.getItemAt(0).age+" "+coll.getItemAt(0).name);
}
フィルタリング
ArayCollectionデータをフィルタリングし、フィルタの不一致を除去する結果を設定します.
プロトタイプはfunction(item:Object):Booleanの関数をアラーCollectionのfilter属性に渡す.true表現の値がアーラCollectionに残っている場合、falseに戻ってその値が除去されることを表す.
filterFunction属性は、ListCollection View類によって定義されており、アラーCollectionの父である.フィルタ関数がListCollection Viewから継承された任意のサブクラスに渡されると、ここはArayCollectionオブジェクトであり、フィルタを適用した後、refresh方法を呼び出さなければならない.
import mx.collections.ArrayCollection;
private var coll:ArrayCollection;
private function init():void {
coll = new ArrayCollection([
{name:"Martin Foo", age:25},
{name:"Joe Bar", age:15},
{name:"John Baz", age:23},
{name:"Matt Baz", age:21}]);
coll.filterFunction = filterFunc;
coll.refresh();
for(var i:int = 0; i<coll.length; i++) {
trace(coll.getItemAt(i).name);
}
}
private function filterFunc(value:Object):Object {
if(Number(value.age) > 21) {
return true;
}rreturn false;
}