У меня есть компонент s:List. Я хочу обработать событие щелчка, чтобы узнать, какой элемент списка выбран. Я не вижу события Click в s:List. Любые обходные пути?
Спасибо.
У меня есть компонент s:List. Я хочу обработать событие щелчка, чтобы узнать, какой элемент списка выбран. Я не вижу события Click в s:List. Любые обходные пути?
Спасибо.
Я знаю, что опаздываю на вечеринку, но самый простой способ получить выбранный узел из списка в событии щелчка — использовать свойство currentTarget.
function myClickHandler(event:MouseEvent):void{
Alert.show("My Var: " + event.currentTarget.selectedItem.myVar);
}
<s:List ... click="myClickHandler(event);">
...
</s:List>
видеть:
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7cdb.html
Вы можете использовать IndexChangeEvent.CHANGE в списке http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html
Пакет spark.events Класс Открытый класс IndexChangeEvent Наследование Объект события IndexChangeEvent
Языковая версия: ActionScript 3.0 Версия продукта: Flex 4 Версии среды выполнения: Flash Player 10, AIR 1.5
Класс IndexChangeEvent представляет события, которые отправляются при изменении индекса в компоненте Spark.
Смотрите также
spark.components.supportClasses.ListBase spark.components.List spark.components.ButtonBar
Я придумал, как это сделать. Я подумал, что поделюсь, чтобы это помогло другим, таким как я:
<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:List id="myid"
dataProvider="{listDP}"
width="100%"
height="100%"/>
по завершении создания приложения:
myid.addEventListener(MouseEvent.CLICK,clickHandler);
Обработчик:
private function clickHandler(event:MouseEvent):void
{
if(myid.selectedIndex>=0)
{
...
}
myid.selectedIndex=-1;//to detect click on same item
}
Спасибо, парни,
Просто убедитесь, что у вашего List
установлена переменная id
. Затем вы вызываете функцию обработчика кликов следующим образом:
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)
}
}
Переменная, которая входит в функцию pushView
, соответствует имени файла mxml для представления, которое вы хотите загрузить.
Это слишком сложно, вот лучший способ:
<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>
Бу я.
<s:List id="lstDesc" width="100%" height="100%">
<s:change>
Descselected();//do your stuff here
</s:change>
</s:List>
во флеш билдере.