Por: Zah + 14.08.2007
Código :
<mx:List id="lista" width="205">
<mx:dataProvider>
<mx:Array>
<mx:String>unoZ</mx:String>
<mx:String>dosY</mx:String>
<mx:String>tresX</mx:String>
<mx:String>cuatroW</mx:String>
<mx:String>cincoV</mx:String>
<mx:String>seisU</mx:String>
<mx:String>sieteT</mx:String>
<mx:String>ochoS</mx:String>
<mx:String>nueveR</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:List>
Código :
private function funcionParaFiltrar (itemParaFiltrar : Object) : Boolean
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
private function filtrar (ev : Event) : void
{
lista.dataProvider.filterFunction = filtroTexto;
lista.dataProvider.refresh();
}
//
//
private function filtroTexto (item : Object) : Boolean
{
//Conviene utilizar siempre la función toString() y poner el data type de item a Object aunque sepamos que
//se trata de una cadena, ya que así podremos utilizar la misma función con cualquier otro tipo de datos.
return item.toString().substr(0, filtro_txt.text.length).toLowerCase() == filtro_txt.text.toLowerCase()
}
]]>
</mx:Script>
<mx:VBox height="100%">
<mx:HBox width="100%">
<mx:Label text="Filtro:"/>
<mx:TextInput id="filtro_txt" change="filtrar (event)"/>
</mx:HBox>
<mx:HBox width="100%">
<mx:List id="lista" width="205">
<mx:dataProvider>
<mx:Array>
<mx:String>unoZ</mx:String>
<mx:String>dosY</mx:String>
<mx:String>tresX</mx:String>
<mx:String>cuatroW</mx:String>
<mx:String>cincoV</mx:String>
<mx:String>seisU</mx:String>
<mx:String>sieteT</mx:String>
<mx:String>ochoS</mx:String>
<mx:String>nueveR</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:List>
</mx:VBox>
</mx:Application>
Código :
private function funcionParaOrdenar (item1 : Object , item2 : Object , camposQueEntranEnElOrden : Array = null) : int
{
//Devuelve -1 si item1 va primero.
//Devuelve 1 si item2 va primero.
//Devuelve 0 si da igual.
}
Código :
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
import mx.collections.Sort;
private function filtrar (ev : Event) : void
{
lista.dataProvider.filterFunction = filtroTexto;
lista.dataProvider.refresh();
}
private function ordenar (ev : Event) : void
{
// lista.dataProvider.sdsadfd;
var sort : Sort = new Sort ()
if (ev.target == ordenarUltimo_btn)
{
sort.compareFunction = ordenUltimaLetra;
}else if (ev.target == ordenarRandom_btn)
{
sort.compareFunction = ordenAleatorio;
}
lista.dataProvider.sort = sort;
lista.dataProvider.refresh ();
}
private function filtroTexto (item : Object) : Boolean
{
return item.toString().substr(0, filtro_txt.text.length).toLowerCase() == filtro_txt.text.toLowerCase()
}
private function ordenUltimaLetra (a : Object , b : Object , fields : Array = null) : int
{
var lastChar1 : String = a.toString().charAt(a.toString().length-1)
var lastChar2 : String = b.toString().charAt(b.toString().length-1);
if (lastChar1 > lastChar2)
{
return 1;
}else if (lastChar1 < lastChar2)
{
return -1;
}else {
return 0;
}
}
private function ordenAleatorio (a : Object , b : Object , fields : Array = null) : int
{
//Esto devuelve siempre -1 o 1 ya que Math.round(Math.random() es 0 o 1 al 50%
return (Math.round(Math.random()) * 2) - 1;
}
]]>
</mx:Script>
<mx:VBox height="100%">
<mx:HBox width="100%">
<mx:Label text="Filtro:"/>
<mx:TextInput id="filtro_txt" change="filtrar (event)"/>
</mx:HBox>
<mx:HBox width="100%">
<mx:List id="lista" width="205">
<mx:dataProvider>
<mx:Array>
<mx:String>unoZ</mx:String>
<mx:String>dosY</mx:String>
<mx:String>tresX</mx:String>
<mx:String>cuatroW</mx:String>
<mx:String>cincoV</mx:String>
<mx:String>seisU</mx:String>
<mx:String>sieteT</mx:String>
<mx:String>ochoS</mx:String>
<mx:String>nueveR</mx:String>
</mx:Array>
</mx:dataProvider>
</mx:List>
<mx:VBox height="100%">
<mx:Button id="ordenarUltimo_btn" label="Orden por última letra" click="ordenar (event)" width="100%"/>
<mx:Button id="ordenarRandom_btn" label="Orden aleatorio" click="ordenar (event)" width="100%"/>
</mx:VBox>
</mx:HBox>
</mx:VBox>
</mx:Application>