パッケージ | mx.collections |
インターフェイス | public interface ISort |
実装者 | Sort, Sort |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
ISort
インターフェイスは、コレクションビューのデータをソートするために必要なソート情報を提供するクラスのインターフェイスを定義します。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。 | ISort | ||
fields : Array
比較するフィールドを指定する ISortField オブジェクトの配列です。 | ISort | ||
unique : Boolean
ソートが一意であるかどうかを示します。 | ISort |
メソッド | 定義元 | ||
---|---|---|---|
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。 | ISort | ||
指定されたプロパティを使用してソートを制御するかどうかを返します。 | ISort | ||
fields 配列を通過して、配列内の ISortField オブジェクトごとに reverse() を呼び出します。 | ISort | ||
指定された配列(配列のコピーではない)に現在のソートを適用します。 | ISort |
compareFunction | プロパティ |
compareFunction:Function
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | 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 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
比較するフィールドを指定する ISortField
オブジェクトの配列です。配列内の ISortField オブジェクトの順序によって、ソート時のフィールドの優先順位が決まります。 デフォルトのソートコンパレータは、比較する 2 つのフィールドのソート順が決定するまで、配列順にソートフィールドをチェックします。
デフォルト値: null。
実装
public function get fields():Array
public function set fields(value:Array):void
関連する API エレメント
unique | プロパティ |
unique:Boolean
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
ソートが一意であるかどうかを示します。 フィールドプロパティのフィールドにより指定された値また組み合わせ値が不確定なソート順または一意ではないソート順になる場合、つまり複数のアイテムが同じソートフィールド値を持つ場合は、一意のソートは失敗します。ソートが一意でない場合は、エラーがスローされます。ソートロジックでこの unique
プロパティ値が使用されるのは、ソートフィールドが明示的に指定されている場合のみです。ソートフィールドが明示的に指定されていない場合、同一値のエレメントがある場合でもエラーはスローされません。
デフォルト値: false。
実装
public function get unique():Boolean
public function set unique(value:Boolean):void
findItem | () | メソッド |
public function findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | 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 で、アイテムが見つからない場合は、ソートされた配列内の値が挿入される位置のインデックスを返します。
|
例外
Error — パラメーターエラーの発生は、検索条件とソートに互換性がないか、ソートのコンパレータ関数を判別できないことを意味しています。
|
propertyAffectsSort | () | メソッド |
public function propertyAffectsSort(property:String):Boolean
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
指定されたプロパティを使用してソートを制御するかどうかを返します。 ソートにカスタムコンパレータが使用されると、この関数は決定的な結果を判断できません。この場合は、常に true
を返します。
パラメーター
property:String — テストするフィールドの名前です。
|
Boolean — プロパティ値がソート結果に影響を与えるかどうかを指定します。 ソートでデフォルトの compareFunction が使用される場合、true が返されるのは、property パラメーターがソートフィールドを指定する場合です。 ソートまたは ISortField でカスタムコンパレータが使用されると、確認する方法はないので、true を返します。
|
reverse | () | メソッド |
public function reverse():void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
fields
配列を通過して、配列内の ISortField
オブジェクトごとに reverse()
を呼び出します。フィールドが降順の場合は昇順になり、昇順の場合は降順になります。
メモ:ICollectionView
は、fields
配列内のオブジェクトが変更されても自動的には更新されません。ビューを更新するには、refresh()
メソッドを呼び出します。
sort | () | メソッド |
public function sort(items:Array):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 9, AIR 1.1 |
指定された配列(配列のコピーではない)に現在のソートを適用します。 配列が変更されないようにするには、コピーを作成し、そのコピーを items
パラメーターで使用します。
ICollectionView
実装は、sort
メソッドを自動的に呼び出し、基になるデータのコピーに対してソートが行われるようにします。
パラメーター
items:Array — ソートするアイテムの配列です。
|
Tue Jun 12 2018, 10:34 AM Z