| パッケージ | mx.collections |
| public class Sort | |
| 継承 | Sort EventDispatcher Object |
sort プロパティにソートインスタンスを割り当てた後で、ビューの refresh() メソッドを呼び出してソート条件を適用します。ソートの定義は通常、複雑なアイテムのコレクション、つまりコレクション内のオブジェクトのプロパティに対してソートが実行されるようなコレクションに対して行います。次に、この用例を示します。
var col:ICollectionView = new ArrayCollection();
// In the real world, the collection would have more than one item.
col.addItem({first:"Anders", last:"Dickerson"});
// Create the Sort instance.
var sort:Sort = new Sort();
// Set the sort field; sort on the last name first, first name second.
// Both fields are case-insensitive.
sort.fields = [new SortField("last", true), new SortField("first", true];
// Assign the Sort object to the view.
col.sort = sort;
// Apply the sort to the collection.
col.refresh();
コレクションに String、Date、Boolean などの単純なアイテムが含まれている場合があります。この場合は、これらの単純型に直接ソートを適用します。単純なアイテムにソートを設定するときは、単一のソートフィールドを使用し、SortField オブジェクトコンストラクタに null name (第 1) パラメータを指定します。次に例を示します。
var col:ICollectionView = new ArrayCollection();
col.addItem("California");
col.addItem("Arizona");
var sort:Sort = new Sort();
//ソートフィールドが 1 つだけあり、null を第 1 のパラメータに使用する
sort.fields = [new SortField(null, true)];
col.sort = sort;
col.refresh();
ICollectionView インターフェイスの実装では、ソートを実行する前に、リモートの場所からすべてのアイテムを取得します。 ソートされたリストにページングを使用している場合は、データを取得する前にリモートコレクションにソートを適用します。
MXML シンタックス
MXML シンタックスの非表示
<mx:Sort> タグには、以下の属性があります。
<mx:Sort プロパティ compareFunction="内部比較関数" fields="null" unique="flase" />
デフォルトの MXML プロパティfields
関連項目
| プロパティ | 定義 | ||
|---|---|---|---|
| compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。
| Sort | ||
![]() | constructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
| Object | |
| fields : Array
比較するフィールドを指定する SortField オブジェクトの配列です。
| Sort | ||
![]() | prototype : Object
[static]
クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
| Object | |
| unique : Boolean
ソートが一意であるかどうかを示します。
| Sort | ||
| メソッド | 定義 | ||
|---|---|---|---|
| Sort()
コンストラクタ。
| Sort | ||
![]() | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
| EventDispatcher | |
![]() | dispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
| EventDispatcher | |
| findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内 (要求された場合は挿入ポイント) で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。
| Sort | ||
![]() | hasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
| EventDispatcher | |
![]() | hasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
| Object | |
![]() | isPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
| Object | |
| propertyAffectsSort(property:String):Boolean
指定されたプロパティを使用してソートを制御するかどうかを返します。
| Sort | ||
![]() | propertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
| Object | |
![]() | removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
| EventDispatcher | |
| reverse():void
すべての SortFields を調べて、これらのフィールドに対して reverse() を呼び出します。
| Sort | ||
![]() | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
| Object | |
| sort(items:Array):void
指定された配列 (コピーではなく) に現在のソートを適用します。
| Sort | ||
![]() | toString():String
指定されたオブジェクトのストリング表現を返します。
| Object | |
![]() | valueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
| Object | |
![]() | willTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
| EventDispatcher | |
| 定数 | 定義 | ||
|---|---|---|---|
| ANY_INDEX_MODE : String = "any" [static]
検索を実行すると、一致するアイテムのインデックスを返します。
| Sort | ||
| FIRST_INDEX_MODE : String = "first" [static]
検索を実行すると、最初に一致したアイテムのインデックスを返します。
| Sort | ||
| LAST_INDEX_MODE : String = "last" [static]
検索を実行すると、最後に一致したアイテムのインデックスを返します。
| Sort | ||
| compareFunction | プロパティ |
compareFunction:Function [read-write]
ソート時にアイテムを比較するために使用するメソッドです。このプロパティを指定すると、このクラスで使用する SortField オブジェクトに指定した compareFunction プロパティはすべて無視されます。
比較関数には次のシグネチャが必要です。
function [name](a:Object, b:Object, fields:Array=null):int
この関数は、以下を返す必要があります。
a が b の前に表示されるソート順の場合は -1a = b の場合は 0a が b の後に表示されるソート順の場合は 1内部比較関数に戻すには、この値を null に設定します。
指定された fields 配列は、比較するオブジェクトフィールドを指定します。通常は、フィールドリストを使い果たすか、ゼロではない値が返されるまで、このアルゴリズムはプロパティを比較します。次に例を示します。
function myCompare(a:Object, b:Object, fields:Array=null):int
{
var result:int = 0;
var i:int = 0;
var propList:Array = fields ? fields : internalPropList;
var len:int = propList.length;
var propName:String;
while (result == 0 && (i < len))
{
propName = propList[i];
result = compareValues(a[propName], b[propName]);
i++;
}
return result;
}
function compareValues(a:Object, b:Object):int
{
if (a == null && b == null)
return 0;
if (a == null)
return 1;
if (b == null)
return -1;
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
デフォルト値は、ストリング、数値、日付を比較できる内部比較関数です。この比較関数では、昇順または降順での比較が可能で、ストリングの比較に関しては大文字と小文字の区別の有無を指定できます。カスタム比較アルゴリズムが必要な場合にのみ、独自の関数を指定します。このことは、通常、計算フィールドが表示で使用されている場合にのみ該当します。
また、SortField クラスの compare プロパティを使用することで、各ソートフィールドに対して個別の比較関数を指定することもできます。この方法だと、一部のフィールドにはデフォルトの比較を使用して、別のフィールドには独自の比較を使用することができます。
public function get compareFunction():Function
public function set compareFunction(value:Function):void
| fields | プロパティ |
fields:Array [read-write]比較するフィールドを指定する SortField オブジェクトの配列です。配列内の SortField オブジェクトの順序によって、ソート時のフィールドの優先順位が決まります。デフォルトのソートコンパレータは、比較する 2 つのフィールドのソート順が決定するまで、配列順にソートフィールドをチェックします。
デフォルト値null.
このプロパティはデータバインディングのソースとして使用できます。
実装 public function get fields():Array
public function set fields(value:Array):void
関連項目
| unique | プロパティ |
unique:Boolean [read-write]ソートが一意であるかどうかを示します。フィールドプロパティのフィールドにより指定された値また組み合わせ値が不確定なソート順または一意ではないソート順になる場合、つまり複数のアイテムが同じソートフィールド値を持つ場合は、一意のソートは失敗します。
デフォルト値false.
public function get unique():Boolean
public function set unique(value:Boolean):void
| Sort | () | コンストラクタ |
public 関数 Sort()コンストラクタ。
フィールドを設定しない、カスタムコンパレータのない新しいソートを作成します。
| findItem | () | メソッド |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内 (要求された場合は挿入ポイント) で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。ListCollectionView クラスの findxxx() メソッドはこのメソッドを使用して、要求されたアイテムを検索します。基本的に、ListCollectionView ベースのオブジェクトからデータを検索する場合は、findItem() ではなくこれらの関数を使用するほうが簡単です。findItem() メソッドは、新しい ICollectionView 実装など、ソートをサポートするクラスを記述する場合に直接呼び出します。
items:Array — 検索する配列です。
|
|
values:Object — 検索するプロパティを含むオブジェクトです (または検索対象のオブジェクト自身)。オブジェクトは、フィールド名と値のペアで構成します。フィールド名は SortFields プロパティで指定したフィールドの名前であり、このプロパティに指定したとおりの順序を使用します。
SortFields プロパティのすべてのフィールドを指定する必要はありませんが、順序を飛ばすことはできません。したがって、SortFields プロパティに 3 つのフィールドが指定されている場合は、その 1 番目と 2 番目のフィールドをこのパラメータに使用することはできますが、1 番目と 3 番目だけを指定することはできません。
|
|
mode:String — 実行する検索の種類を含むストリングです。有効な値は次のとおりです。
|
|
returnInsertionIndex:Boolean (default = false) — values パラメータに指定されたアイテムが見つからない場合、このパラメータが true に設定されていると、findItem() メソッドは値の挿入ポイントを返します。これは、アイテムを挿入するためのソート済みポイントです。
|
|
compareFunction:Function (default = null) — アイテムの検索に使用するコンパレータ関数です。このパラメータを指定しないと、Sort インスタンスの compareFunction プロパティによって決定された関数が使用されます。この場合、値オブジェクトと現在の SortFields によって決定されたフィールド配列が渡されます。
|
int —
int 見つかったアイテムの配列内のインデックスです。returnInsertionIndex パラメータが false で、アイテムが見つからない場合は、-1 を返します。returnInsertionIndex パラメータが true で、アイテムが見つからない場合は、ソートされた配列内で値が挿入されるポイントのインデックスを返します。
|
| propertyAffectsSort | () | メソッド |
public function propertyAffectsSort(property:String):Boolean
指定されたプロパティを使用してソートを制御するかどうかを返します。ソートにカスタムコンパレータが使用されると、この関数は決定的な結果を判断できません。この場合は、常に true を返します。
property:String — テストするフィールドの名前です。
|
Boolean —
プロパティ値がソート結果に影響を与えるかどうかを指定します。ソートでデフォルトの compareFunction が使用されると、property パラメータがソートフィールドを決定する場合は true を返します。ソートまたは SortField でカスタムコンパレータが使用されると、確認する方法はないので、true を返します。
|
| reverse | () | メソッド |
public function reverse():voidすべての SortFields を調べて、これらのフィールドに対して reverse() を呼び出します。フィールドが降順の場合は昇順になり、昇順の場合は降順になります。
メモ : ICollectionView は、SortFields が変更されても自動的に更新されません。ビューを更新するには、refresh() メソッドを呼び出します。
| sort | () | メソッド |
public function sort(items:Array):void
指定された配列 (コピーではなく) に現在のソートを適用します。配列が変更されないようにするには、コピーを作成し、そのコピーを items パラメータで使用します。
ICollectionView 実装は、sort メソッドを自動的に呼び出し、基になるデータのコピーに対してソートが行われるようにします。
items:Array — ソートするアイテムの配列です。
|
| ANY_INDEX_MODE | 定数 |
public static const ANY_INDEX_MODE:String = "any"検索を実行すると、一致するアイテムのインデックスを返します。
| FIRST_INDEX_MODE | 定数 |
public static const FIRST_INDEX_MODE:String = "first"検索を実行すると、最初に一致したアイテムのインデックスを返します。
| LAST_INDEX_MODE | 定数 |
public static const LAST_INDEX_MODE:String = "last"検索を実行すると、最後に一致したアイテムのインデックスを返します。