パッケージ | mx.collections |
クラス | public class Sort |
継承 | Sort EventDispatcher Object |
実装 | ISort |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
Flex 4.5 以降では、このクラスの代わりとして spark.collections.Sort クラスを使用することをお勧めします。 |
既存のビューに対してソートを設定するために必要なソート情報を提供します(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();
コレクションに String
、Date
、Boolean
などの単純なアイテムが含まれている場合があります。この場合、これら単純型に直接ソートを行います。 単純なアイテムにソートを設定するときは、単一のソートフィールドを使用し、SortField オブジェクトコンストラクターに null
name
(第 1)パラメーターを指定します。 次に実際の使用例を示します。
var col:ICollectionView = new ArrayCollection();
col.addItem("California");
col.addItem("Arizona");
var sort:Sort = new Sort();
// There is only one sort field, so use a null
// first parameter.
sort.fields = [new SortField(null, true)];
col.sort = sort;
col.refresh();
ICollectionView インターフェイスの実装では、ソートを実行する前に、リモートの場所からすべてのアイテムを取得します。 ソートされたリストにページングを使用している場合は、データを取得する前にリモートコレクションにソートを適用します。
デフォルトでは、この Sort クラスは、言語固有の文字列を正しくソートしません。 このタイプのソートについては、spark.collections.Sort
クラスおよび spark.collections.SortField
クラスを参照してください。
The <mx:Sort>
tag has the following attributes:
<mx:Sort Properties compareFunction="Internal compare function" fields="null" unique="false | true" />
In case items have inconsistent data types or items have complex data types, the use of the default built-in compare functions is not recommended. Inconsistent sorting results may occur in such cases. To avoid such problem, provide a custom compare function and/or make the item types consistent.
Just like any other AdvancedStyleClient
-based classes,
the Sort
and SortField
classes do not have a
parent-child relationship in terms of event handling. Locale changes in a
Sort
instance are not dispatched to its SortField
instances automatically. The only exceptional case is the internal default
SortField
instance used when no explicit fields are provided.
In this case, the internal default SortField
instance follows
the locale style that the owner Sort
instance has.
デフォルトの MXML プロパティfields
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。 | Sort | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
fields : Array
比較するフィールドを指定する ISortField オブジェクトの配列です。 | Sort | ||
unique : Boolean
ソートが一意であるかどうかを示します。 | Sort |
メソッド | 定義元 | ||
---|---|---|---|
Sort()
コンストラクターです。 | Sort | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。 | Sort | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティを使用してソートを制御するかどうかを返します。 | Sort | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
fields 配列を通過して、配列内の ISortField オブジェクトごとに reverse() を呼び出します。 | Sort | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
指定された配列(配列のコピーではない)に現在のソートを適用します。 | Sort | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
定数 | 定義元 | ||
---|---|---|---|
ANY_INDEX_MODE : String = "any" [静的]
検索を実行すると、一致するアイテムのインデックスを返します。 | Sort | ||
FIRST_INDEX_MODE : String = "first" [静的]
検索を実行すると、最初に一致したアイテムのインデックスを返します。 | Sort | ||
LAST_INDEX_MODE : String = "last" [静的]
検索を実行すると、最後に一致したアイテムのインデックスを返します。 | Sort |
compareFunction | プロパティ |
compareFunction:Function
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
ソート時にアイテムを比較するために使用するメソッドです。 このプロパティを指定すると、このクラスで使用する ISortField オブジェクトに指定した compareFunction
プロパティはすべて無視されます。
比較関数には次のシグネチャが必要です。
function [name](a:Object, b:Object, fields:Array = null):int
この関数は、以下を返す必要があります。 value:
Object a
がObject b
の前に現れるソート順の場合は -1Object a
がObject b
と等しい場合は 0Object a
がObject 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;
}
デフォルト値は、ストリング、数値、日付を比較できる内部比較関数です。この比較関数では、昇順または降順での比較が可能です。 カスタム比較アルゴリズムが必要な場合にのみ、独自の関数を指定します。 このことは、通常、計算フィールドが表示で使用される場合にのみ該当します。
また、ISortField
クラスの compareFunction
プロパティを使用することで、各ソートフィールドに対して個別の比較関数を指定することもできます。こうすれば、一部のフィールドにデフォルトの比較関数を適用し、別のフィールドには独自の比較関数を適用することが可能となります。
実装
public function get compareFunction():Function
public function set compareFunction(value:Function):void
fields | プロパティ |
fields:Array
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
比較するフィールドを指定する ISortField
オブジェクトの配列です。配列内の ISortField オブジェクトの順序によって、ソート時のフィールドの優先順位が決まります。 デフォルトのソートコンパレータは、比較する 2 つのフィールドのソート順が決定するまで、配列順にソートフィールドをチェックします。
デフォルト値: null。
このプロパティはデータバインディングのソースとして使用できます。 このプロパティを変更すると、 fieldsChanged
イベントが送出されます。
実装
public function get fields():Array
public function set fields(value:Array):void
関連する API エレメント
unique | プロパティ |
unique:Boolean
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
ソートが一意であるかどうかを示します。 フィールドプロパティのフィールドにより指定された値また組み合わせ値が不確定なソート順または一意ではないソート順になる場合、つまり複数のアイテムが同じソートフィールド値を持つ場合は、一意のソートは失敗します。ソートが一意でない場合は、エラーがスローされます。ソートロジックでこの unique
プロパティ値が使用されるのは、ソートフィールドが明示的に指定されている場合のみです。ソートフィールドが明示的に指定されていない場合、同一値のエレメントがある場合でもエラーはスローされません。
デフォルト値: false。
実装
public function get unique():Boolean
public function set unique(value:Boolean):void
Sort | () | コンストラクター |
public function Sort()
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
コンストラクターです。
フィールドを設定しない、カスタムコンパレータのない新しいソートを作成します。
findItem | () | メソッド |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。 ListCollectionView
クラスの findxxx()
メソッドはこのメソッドを使用して、要求されたアイテムを検索します。基本的に、ListCollectionView
ベースのオブジェクトからデータを検索する場合は、findItem()
ではなく、これらの関数を使用するほうが簡単です。findItem()
メソッドは、新しい ICollectionView 実装のような、ソートをサポートするクラスを記述する場合に直接呼び出します。この関数を呼び出す前に、入力アイテム配列をソートしておく必要があります。未ソートの場合、この関数は指定した値プロパティを正しく検索することができません。
パラメーター
items:Array — 検索する配列です。
| |||||||
values:Object — 検索するプロパティを含むオブジェクトです(または検索対象のオブジェクト自身)。 オブジェクトは、フィールド名と値のペアで作成します。フィールド名は fields プロパティで指定したフィールドの名前であり、このプロパティに指定したとおりの順序になります。 fields プロパティのすべてのフィールドを指定する必要はありませんが、順序を飛ばすことはできません。 したがって、fields プロパティに 3 つのフィールドが指定されている場合は、その 1 番目と 2 番目のフィールドをこのパラメーターに使用することはできますが、1 番目と 3 番目だけを指定することはできません。
| |||||||
mode:String — 実行する検索の種類を含むストリングです。 有効な値は次のとおりです。
| |||||||
returnInsertionIndex:Boolean (default = false ) — values パラメーターに指定されたアイテムが見つからない場合、このパラメーターが true に設定されていると、findItem() メソッドは値の挿入ポイント(ソートされた順序でのアイテムの挿入位置)を返します。
| |||||||
compareFunction:Function (default = null ) — アイテムの検索に使用するコンパレータ関数です。 このパラメーターを指定しなかった場合または null 値を指定した場合、findItem() 関数は、ISort インスタンスの compareFunction プロパティによって決定された比較関数を使用します。この場合、値オブジェクトと現在の SortFields によって決定されたフィールド配列が渡されます。null 以外の値を指定した場合、findItem() 関数は、その値を比較関数として使用します。compareFunction として渡される関数のシグニチャは次のとおりである必要があります。function myCompareFunction(a:Object, b:Object):int 。ISort.compareFunction() プロパティの比較関数とは異なり、3 番目の引数はありません。
|
int — int は、見つかったアイテムの配列内のインデックスです。 returnInsertionIndex パラメーターが false で、アイテムが見つからない場合は、-1 を返します。 returnInsertionIndex パラメーターが true で、アイテムが見つからない場合は、ソートされた配列内の値が挿入される位置のインデックスを返します。
|
propertyAffectsSort | () | メソッド |
public function propertyAffectsSort(property:String):Boolean
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
指定されたプロパティを使用してソートを制御するかどうかを返します。 ソートにカスタムコンパレータが使用されると、この関数は決定的な結果を判断できません。この場合は、常に true
を返します。
パラメーター
property:String — テストするフィールドの名前です。
|
Boolean — プロパティ値がソート結果に影響を与えるかどうかを指定します。 ソートでデフォルトの compareFunction が使用される場合、true が返されるのは、property パラメーターがソートフィールドを指定する場合です。 ソートまたは ISortField でカスタムコンパレータが使用されると、確認する方法はないので、true を返します。
|
reverse | () | メソッド |
public function reverse():void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
fields
配列を通過して、配列内の ISortField
オブジェクトごとに reverse()
を呼び出します。フィールドが降順の場合は昇順になり、昇順の場合は降順になります。
メモ:ICollectionView
は、fields
配列内のオブジェクトが変更されても自動的には更新されません。ビューを更新するには、refresh()
メソッドを呼び出します。
sort | () | メソッド |
public function sort(items:Array):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
指定された配列(配列のコピーではない)に現在のソートを適用します。 配列が変更されないようにするには、コピーを作成し、そのコピーを items
パラメーターで使用します。
ICollectionView
実装は、sort
メソッドを自動的に呼び出し、基になるデータのコピーに対してソートが行われるようにします。
パラメーター
items:Array — ソートするアイテムの配列です。
|
ANY_INDEX_MODE | 定数 |
public static const ANY_INDEX_MODE:String = "any"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
検索を実行すると、一致するアイテムのインデックスを返します。
FIRST_INDEX_MODE | 定数 |
public static const FIRST_INDEX_MODE:String = "first"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
検索を実行すると、最初に一致したアイテムのインデックスを返します。
LAST_INDEX_MODE | 定数 |
public static const LAST_INDEX_MODE:String = "last"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 3 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
検索を実行すると、最後に一致したアイテムのインデックスを返します。
Tue Jun 12 2018, 10:34 AM Z