パッケージmx.collections
public class Sort
継承Sort Inheritance EventDispatcher Inheritance Object

既存のビューに対してソートを設定するために必要なソート情報を提供します (ICollectionView インターフェイスまたはこのインターフェイスを実装するクラス)。ビューの 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();
  

コレクションに StringDateBoolean などの単純なアイテムが含まれている場合があります。この場合は、これらの単純型に直接ソートを適用します。単純なアイテムにソートを設定するときは、単一のソートフィールドを使用し、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 シンタックスexpandedMXML シンタックスの非表示

<mx:Sort> タグには、以下の属性があります。

 <mx:Sort プロパティ compareFunction="内部比較関数" fields="null" unique="flase" /> 

デフォルトの MXML プロパティfields

関連項目

mx.collections.ICollectionView
データプロバイダおよびコレクションの使用


パブリックプロパティ
 プロパティ定義
  compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。
Sort
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  fields : Array
比較するフィールドを指定する SortField オブジェクトの配列です。
Sort
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  unique : Boolean
ソートが一意であるかどうかを示します。
Sort
パブリックメソッド
 メソッド定義
  Sort()
コンストラクタ。
Sort
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
  findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内 (要求された場合は挿入ポイント) で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。
Sort
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  propertyAffectsSort(property:String):Boolean
指定されたプロパティを使用してソートを制御するかどうかを返します。
Sort
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  reverse():void
すべての SortFields を調べて、これらのフィールドに対して reverse() を呼び出します。
Sort
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  sort(items:Array):void
指定された配列 (コピーではなく) に現在のソートを適用します。
Sort
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(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
           

この関数は、以下を返す必要があります。

内部比較関数に戻すには、この値を 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 — 実行する検索の種類を含むストリングです。有効な値は次のとおりです。
  • ANY_INDEX_MODE
  • 値が見つかったいずれかの位置を返します。
  • FIRST_INDEX_MODE
  • 値が最初に見つかった位置を返します。
  • LAST_INDEX_MODE
  • 指定された値が最後に見つかった位置を返します。
 
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"

検索を実行すると、最後に一致したアイテムのインデックスを返します。