Tengo un componente s: List. Quiero manejar un evento de clic para saber qué elemento de lista se selecciona. No veo el evento Click en s: List. ¿Alguna solución?Cómo manejo el evento click en el control Spark List en Flex 4
Gracias.
Tengo un componente s: List. Quiero manejar un evento de clic para saber qué elemento de lista se selecciona. No veo el evento Click en s: List. ¿Alguna solución?Cómo manejo el evento click en el control Spark List en Flex 4
Gracias.
Pensé cómo hacer esto. Pensé que iba a compartir de forma que ayuda a otros como yo:
<s:List id="taskList" creationComplete="taskList.addEventListener('listClickEvent',handleListClick);" width="100%" height="80%" labelField="description" dataProvider="{todoList}"
useHandCursor="true">
<s:itemRenderer>
<fx:Component>
<s:ItemRenderer click="handleClick(event)">
<fx:Script>
<![CDATA[
import ListClickEvent;
import flash.events.MouseEvent;
import mx.controls.Alert;
private function handleClick(me:MouseEvent):void
{
var listClickEvent:ListClickEvent = new ListClickEvent("listClickEvent");
listClickEvent.index = itemIndex;
owner.dispatchEvent(listClickEvent);
}
]]>
</fx:Script>
<s:Label text="{data.description}" top="5" bottom="5" right="3" left="3"/>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
Sé que llego tarde a la fiesta aquí, pero la forma más sencilla de obtener el nodo seleccionado de la lista en un evento de clic es utilizar el currentTarget propiedad.
function myClickHandler(event:MouseEvent):void{
Alert.show("My Var: " + event.currentTarget.selectedItem.myVar);
}
<s:List ... click="myClickHandler(event);">
...
</s:List>
véase:
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7cdb.html
Otra forma:
<s:List id="myid"
dataProvider="{listDP}"
width="100%"
height="100%"/>
en la creación de aplicaciones completa:
myid.addEventListener(MouseEvent.CLICK,clickHandler);
Handler:
private function clickHandler(event:MouseEvent):void
{
if(myid.selectedIndex>=0)
{
...
}
myid.selectedIndex=-1;//to detect click on same item
}
Puede utilizar el IndexChangeEvent.CHANGE en la Lista http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html
paquete spark.events Clase public class IndexChangeEvent Inheritance Object IndexChangeEvent Evento
Versión del lenguaje: ActionScript 3.0 Versión del producto: Flex 4 Versiones en tiempo de ejecución: Flash Player 10, AIR 1.5
El índice La clase ChangeEvent representa eventos que se envían cuando un índice cambia en un componente Spark.
Ver también
spark.components.supportClasses.ListBase spark.components.List spark.components.ButtonBar
Eso es demasiado complejo farrrr que aquí hay una manera mejor:
<s:List id="whatever" dataProvider="{allMyData}" click="whateverList_click(event)"> </s:List>
<fx:Script>
var whatWasClicked:String = whatever.dataProvider.getItemAt(whatever.selectedIndex).label;
</fx:Script>
Boo ya.
Gracias chicos,
Sólo asegúrese de que su List
tiene su id
conjunto de variables. Posteriormente, se llama en su función de clic manejador de la siguiente manera:
private function listClickHandler(event:IndexChangeEvent) {
if(myListsID.seletectedIndex == 0){
navigator.pushView(whateverViewyouwant)
} else if(myListsID.selectedIndex ==1){
navigator.pushView(changetoanotherview)
} else if(myListsID.selectedIndex == 2){
navigator.pushView(mobileViewsareEasy)
} else if(myListsID.selectedIndex == 3){
navigator.pushView(wowSomanyViews)
}
}
La variable que entra en la función pushView
corresponde al nombre del archivo MXML para la vista que desea cargar
<s:List id="lstDesc" width="100%" height="100%">
<s:change>
Descselected();//do your stuff here
</s:change>
</s:List>
en constructor de flash.
Para aquellos con Robotlegs: * eventMap.mapListener (yourView, IndexChangeEvent.CHANGE, yourListener, IndexChangeEvent); * –