Как обработать событие щелчка в элементе управления Spark List в Flex 4

У меня есть компонент s:List. Я хочу обработать событие щелчка, чтобы узнать, какой элемент списка выбран. Я не вижу события Click в s:List. Любые обходные пути?

Спасибо.


person motiver    schedule 19.02.2010    source источник


Ответы (7)


Я знаю, что опаздываю на вечеринку, но самый простой способ получить выбранный узел из списка в событии щелчка — использовать свойство 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

person esBe    schedule 10.11.2010

Вы можете использовать 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

person Randy    schedule 02.05.2011
comment
Для тех, у кого есть Robotlegs: eventMap.mapListener(yourView, IndexChangeEvent.CHANGE, yourListener, IndexChangeEvent); - person Lee Chee Kiam; 06.01.2012

Я придумал, как это сделать. Я подумал, что поделюсь, чтобы это помогло другим, таким как я:

<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>   
person motiver    schedule 03.03.2010

Другой путь:

    <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

      }
person ivy    schedule 28.03.2011

Спасибо, парни,

Просто убедитесь, что у вашего 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 для представления, которое вы хотите загрузить.

person Shaq Abid    schedule 29.10.2012

Это слишком сложно, вот лучший способ:

<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>

Бу я.

person HuXu7    schedule 02.08.2011

<s:List id="lstDesc"  width="100%" height="100%">

    <s:change>                  
        Descselected();//do your stuff here
    </s:change>

</s:List>

во флеш билдере.

person johnny    schedule 27.08.2013