パッケージ | spark.collections |
クラス | public class Sort |
継承 | Sort AdvancedStyleClient EventDispatcher Object |
実装 | ISort |
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
ICollectionView
インターフェイスまたはこのインターフェイスを実装するクラス)。ビューの sort
プロパティに 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:ISort = new Sort();
// Set the sort field; sort on the last name first, first name second.
var sortfieldLastName:ISortField = new SortField("last",true);
var sortfieldFirstName:ISortField = new SortField("first",true);
// Set the locale style to "en-US" to cause the strings
// to be ordered according to the rules for English as used in the USA.
sortfieldLastName.setStyle("locale","en-US");
sortfieldFirstName.setStyle("locale","en-US");
sort.fields = [sortfieldLastName, sortfieldFirstName];
// 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)パラメーターを指定します。 次に実際の使用例を示します。
import mx.collections.ArrayCollection;
import spark.collections.Sort;
import spark.collections.SortField;
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.
var sortfield:SortField = new SortField("null",true);
// Set the locale style to "en-US" to set the language for the sort.
sortfield.setStyle("locale","en-US");
sort.fields = [sortfield];
col.sort = sort;
col.refresh();
ICollectionView
インターフェイスの実装では、ソートを実行する前に、リモートの場所からすべてのアイテムを取得します。ソートされたリストにページングを使用している場合は、データを取得する前にリモートコレクションにソートを適用します。
SortField
クラスの提供するデフォルトの比較は、言語固有の文字列を正しくソートします。言語は、クラスのインスタンスの locale スタイルを、次のいずれかの方法で設定して選択します。
- MXML 宣言内でクラスを使用し、宣言を格納するドキュメントからロケールを継承する。 例:
<fx:Declarations> <s:SortField id="sf" /> </fx:Declarations>
<fx:Declarations> <s:SortField id="sf_SimplifiedChinese" locale="zh-Hans-CN" /> </fx:Declarations>
setStyle
メソッド(sf.setStyle("locale", "zh-Hans-CN")
など)を呼び出す。
addStyleClient()
メソッドを呼び出すことによって UIComponent
からスタイルを継承する。
The <s:Sort>
tag has the following attributes:
<s:Sort Properties compareFunction="Internal compare function" fields="null" unique="false | true" />
In case items have inconsistent data types or items have complex data types, use of default built-in compare functions is not desired. Inconsistent sort result may occur in such cases. To avoid such problem, provide custom compare function and/or make item types consistent.
デフォルトの MXML プロパティfields
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
className : String [読み取り専用]
コンポーネントクラスの名前です。 | AdvancedStyleClient | ||
compareFunction : Function
ソート時にアイテムを比較するために使用するメソッドです。 | Sort | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
fields : Array
比較するフィールドを指定する ISortField オブジェクトの配列です。 | Sort | ||
id : String
コンポーネントの ID です。 | AdvancedStyleClient | ||
inheritingStyles : Object
このビジュアルでないスタイルクライアントのインスタンスの継承可能なスタイルを含むオブジェクトです。 | AdvancedStyleClient | ||
moduleFactory : IFlexModuleFactory
モジュールファクトリは、このビジュアルでないスタイルクライアントのインスタンスのスタイルを制御するスタイルマネージャーを検索するためのコンテキストとして使用されます。 | AdvancedStyleClient | ||
nonInheritingStyles : Object
このコンポーネントの非継承スタイルのチェーンの始まりです。 | AdvancedStyleClient | ||
styleDeclaration : CSSStyleDeclaration
このオブジェクトで宣言されたインラインスタイルを保持するスタイル宣言です。 | AdvancedStyleClient | ||
styleManager : IStyleManager2 [読み取り専用]
このコンポーネントで使用する StyleManager インスタンスを返します。 | AdvancedStyleClient | ||
styleName : Object
オブジェクトのスタイル値のソースです。 | AdvancedStyleClient | ||
styleParent : IAdvancedStyleClient
コンポーネントの親は、下位要素のセレクターを評価するために使用されます。 | AdvancedStyleClient | ||
unique : Boolean
ソートが一意であるかどうかを示します。 | Sort |
メソッド | 定義元 | ||
---|---|---|---|
Sort()
コンストラクターです。 | Sort | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
このコンポーネントインスタンスからスタイルプロパティを削除します。 | AdvancedStyleClient | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
findItem(items:Array, values:Object, mode:String, returnInsertionIndex:Boolean = false, compareFunction:Function = null):int
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -1 を返します。 | Sort | ||
このコンポーネントに適用されるタイプセレクターの CSSStyleDeclaration オブジェクトの配列を返します。何も存在しない場合は null を返します。 | AdvancedStyleClient | ||
このコンポーネントのスタイル参照チェーンのいずれかの場所に設定されたスタイルプロパティを取得します。 | AdvancedStyleClient | ||
currentCSSState が null でない場合、true を返します。 | AdvancedStyleClient | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
initialized メソッドは、このクラスまたはこのクラスを拡張するクラスが MXML 宣言で使用されると呼び出されます。 | AdvancedStyleClient | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
cssState が currentCSSState に一致した場合は、true を返します。 | AdvancedStyleClient | ||
このインスタンスが、指定されたタイプと同じであるのか、それともそのサブクラスであるのかを判別します。 | AdvancedStyleClient | ||
スタイルの変更を、このスタイルクライアントのインスタンスの子に通知します。 | AdvancedStyleClient | ||
指定されたプロパティを使用してソートを制御するかどうかを返します。 | Sort | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
getStyle() メソッドが機能するように、内部のスタイルキャッシュ値を設定します。 | AdvancedStyleClient | ||
各エフェクトイベントのイベントリスナーの 1 つとして、EffectManager を登録します。 | AdvancedStyleClient | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
fields 配列を通過して、配列内の ISortField オブジェクトごとに reverse() を呼び出します。 | Sort | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
このコンポーネントインスタンスのスタイルプロパティを設定します。 | AdvancedStyleClient | ||
指定された配列(配列のコピーではない)に現在のソートを適用します。 | Sort | ||
スタイルプロパティの変更を検出します。 | AdvancedStyleClient | ||
コンポーネントのスタイルを初めて初期化するとき、Flex は stylesInitialized() メソッドを呼び出します。 | AdvancedStyleClient | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
スタイルには共通スタイルと特定のテーマに関連するスタイルがあります。共通スタイルは、任意のテーマと共に使用できます。特定のテーマに関連するスタイルは、アプリケーションがそのテーマを使用する場合にのみ使用できます。
スタイル | 説明 | 定義元 | ||
---|---|---|---|---|
locale | 型: String CSS 継承: はい 言語バージョン: ActionScript 3.0 製品バージョン: Flex 4.5 ランタイムバージョン: Flash10.1, AIR 2.5 言語、地域、スクリプトおよびオプションで他の関連するタグおよびキーを指定するロケール識別子です。 この識別子のシンタックスは、Unicode Technical Standard #35(en-US、de-DE、zh-Hans-CN など)で定義されている構文に従う必要があります。 ブラウザーベースのアプリケーションの場合、デフォルトのロケールは、ブラウザーの言語設定に基づいて設定されます(これは、Javascript から使用できるブラウザーの UI の言語ではなく、ブラウザーの環境設定でユーザーが設定した Web ページの優先ロケールのリストでであることに注意してください)。AIR アプリケーションの場合、デフォルトの UI ロケールはユーザーのシステムの環境設定に基づいて設定されます。 詳細 | Sort |
定数 | 定義元 | ||
---|---|---|---|
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 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 1.5 |
ソート時にアイテムを比較するために使用するメソッドです。 このプロパティを指定すると、このクラスで使用する 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 10.1, AIR 2.5 |
比較するフィールドを指定する 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 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 1.5 |
ソートが一意であるかどうかを示します。 フィールドプロパティのフィールドにより指定された値また組み合わせ値が不確定なソート順または一意ではないソート順になる場合、つまり複数のアイテムが同じソートフィールド値を持つ場合は、一意のソートは失敗します。ソートが一意でない場合は、エラーがスローされます。ソートロジックでこの unique
プロパティ値が使用されるのは、ソートフィールドが明示的に指定されている場合のみです。ソートフィールドが明示的に指定されていない場合、同一値のエレメントがある場合でもエラーはスローされません。
デフォルト値: false。
実装
public function get unique():Boolean
public function set unique(value:Boolean):void
Sort | () | コンストラクター |
public function Sort()
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
コンストラクターです。
フィールドを設定しない、カスタムコンパレータのない新しいソートを作成します。
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 10.1, AIR 2.5 |
指定された配列内(要求された場合は挿入ポイント)で指定されたオブジェクトを検索し、見つかった場合はインデックス、見つからなかった場合は -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 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
指定されたプロパティを使用してソートを制御するかどうかを返します。 ソートにカスタムコンパレータが使用されると、この関数は決定的な結果を判断できません。この場合は、常に true
を返します。
パラメーター
property:String — テストするフィールドの名前です。
|
Boolean — プロパティ値がソート結果に影響を与えるかどうかを指定します。 ソートでデフォルトの compareFunction が使用される場合、true が返されるのは、property パラメーターがソートフィールドを指定する場合です。 ソートまたは ISortField でカスタムコンパレータが使用されると、確認する方法はないので、true を返します。
|
reverse | () | メソッド |
public function reverse():void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
fields
配列を通過して、配列内の ISortField
オブジェクトごとに reverse()
を呼び出します。フィールドが降順の場合は昇順になり、昇順の場合は降順になります。
メモ:ICollectionView
は、fields
配列内のオブジェクトが変更されても自動的には更新されません。ビューを更新するには、refresh()
メソッドを呼び出します。
sort | () | メソッド |
public function sort(items:Array):void
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
指定された配列(配列のコピーではない)に現在のソートを適用します。 配列が変更されないようにするには、コピーを作成し、そのコピーを items
パラメーターで使用します。
ICollectionView
実装は、sort
メソッドを自動的に呼び出し、基になるデータのコピーに対してソートが行われるようにします。
パラメーター
items:Array — ソートするアイテムの配列です。
|
ANY_INDEX_MODE | 定数 |
public static const ANY_INDEX_MODE:String = "any"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
検索を実行すると、一致するアイテムのインデックスを返します。
FIRST_INDEX_MODE | 定数 |
public static const FIRST_INDEX_MODE:String = "first"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
検索を実行すると、最初に一致したアイテムのインデックスを返します。
LAST_INDEX_MODE | 定数 |
public static const LAST_INDEX_MODE:String = "last"
言語バージョン: | ActionScript 3.0 |
製品バージョン: | Flex 4.5 |
ランタイムバージョン: | Flash Player 10.1, AIR 2.5 |
検索を実行すると、最後に一致したアイテムのインデックスを返します。
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"> <!-- Sample program for spark.collections.Sort and SortField --> <fx:Declarations> <s:Sort id="sortbyLastName_FirstName"> <s:fields> <s:SortField name="last"/> <s:SortField name="first"/> </s:fields> </s:Sort> <mx:ArrayCollection id="collection" sort="{sortbyLastName_FirstName}"> <mx:source> <fx:Object first="Anders" last="Dickerson"/> <fx:Object first="Eileen" last="Maccormick"/> <fx:Object first="Aiden" last="MacCormick"/> <fx:Object first="Steve" last="MacGregor"/> </mx:source> </mx:ArrayCollection> </fx:Declarations> <s:VGroup> <s:VGroup> <s:HGroup> <s:Label text="Input Locale ID Name: "/> <s:TextInput id="inputLocaleIDName"/> <!-- Sets the locale style on the document UI component. The SortField and Sort objects defined in the fx:Declarations section will inherit this style. --> <s:Button click="{setStyle('locale', inputLocaleIDName.text); collection.refresh()}" label="Apply"/> </s:HGroup> <s:Label text="Example: 'en-US', 'fr-FR', 'zh-CN', 'ar-SA'"/> </s:VGroup> <s:DataGrid dataProvider="{collection}" width="100%" creationComplete="{collection.refresh()}"> <s:columns> <s:ArrayList> <s:GridColumn dataField="last"/> <s:GridColumn dataField="first"/> </s:ArrayList> </s:columns> </s:DataGrid> </s:VGroup> </s:Application>
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="initApp()"> <!-- Sample program for spark.collections.Sort and SortField --> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import spark.collections.*; [Bindable] private var collection:ArrayCollection = new ArrayCollection(); private function localeChange():void { // Sets the locale style on this application. // The SortField objects will inherit this style. setStyle('locale', inputLocaleIDName.text); collection.refresh(); } private function initApp() : void { // Add data to the collection. collection.addItem({first:"Anders", last:"Dickerson"}); collection.addItem({first:"Steve", last:"Maccormick"}); collection.addItem({first:"Aiden", last:"MacCormick"}); collection.addItem({first:"Eileen", last:"MacGregor"}); // Create the Sort instance. var sort:Sort = new Sort(); // Set the sort field; sort on the last name first, first name // second. var sortfieldLastName:SortField = new SortField("last",true); var sortfieldFirstName:SortField = new SortField("first",true); sort.fields = [sortfieldLastName, sortfieldFirstName]; // Add the sort field objects to this application's list of // style clients. This will cause the sort field objects to // inherit the locale style from this Application. addStyleClient(sortfieldLastName); addStyleClient(sortfieldFirstName); // Assign the Sort object to the view. collection.sort = sort; // Apply the sort to the collection. collection.refresh(); } ]]> </fx:Script> <s:VGroup> <s:VGroup> <s:HGroup> <s:Label text="Input Locale ID Name: "/> <s:TextInput id="inputLocaleIDName"/> <s:Button click="localeChange()" label="Apply"/> </s:HGroup> <s:Label text="Example: 'en-US', 'fr-FR', 'zh-CN', 'ar-SA'"/> </s:VGroup> <s:DataGrid dataProvider="{collection}" width="100%" creationComplete="{collection.refresh()}"> <s:columns> <s:ArrayList> <s:GridColumn dataField="last"/> <s:GridColumn dataField="first"/> </s:ArrayList> </s:columns> </s:DataGrid> </s:VGroup> </s:Application>
Tue Jun 12 2018, 10:34 AM Z