Search This Blog

2009-04-14

Sort Array Collection in Adobe Flex

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="init()">

<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.collections.ArrayCollection;

[Bindable]
private var arrColl:ArrayCollection;

/** This method gets called by the main mx:Application tag and initializes/populates the ArrayCollection object with a bunch of random numbers. */
private function init():void {
var i:int;

/* Initialize and populate the ArrayCollection object. */
arrColl = new ArrayCollection();
for (i = 0; i < 20; i++) {
arrColl.addItem({data:getRandomNumber().toFixed(4)});
}
}

/** This method returns a random floating-point number between 0 and 10000. */
private function getRandomNumber():Number {
return Math.random() * 10000;
}

/** This method gets called by the Button control's click handler and creates a new SortField and Sort object which are used to sort the ArrayCollection. */
private function button_click():void {
/* Create the SortField object for the "data" field in the ArrayCollection object, and make sure we do a numeric sort. */
var dataSortField:SortField = new SortField();
dataSortField.name = "data";
dataSortField.numeric = true;
/*dataSortField.descending = true;To Sort descending order*/

/* Create the Sort object and add the SortField object created earlier to the array of fields to sort on. */
var numericDataSort:Sort = new Sort();
numericDataSort.fields = [dataSortField];


/* Set the ArrayCollection object's sort property to our custom sort, and refresh the ArrayCollection. */
arrColl.sort = numericDataSort;
arrColl.refresh();
}
]]>
</mx:Script>

<mx:List id="list" dataProvider="{arrColl}" textAlign="right" labelField="data" width="100" />

<mx:Button id="button" label="sort items" click="button_click()" />

</mx:Application>

No comments: