6

我有 as:List 组件。我想处理单击事件以了解选择了哪个列表项。我在 s:List 中没有看到 Click 事件。任何解决方法?

谢谢。

4

7 回答 7

11

我知道我在这里聚会迟到了,但是在单击事件中从列表中获取选定节点的最简单方法是使用 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

于 2010-11-10T13:51:54.003 回答
4

您可以使用 List http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html上的 IndexChangeEvent.CHANGE

包 spark.events 类 public class 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

于 2011-05-02T22:55:33.053 回答
2

我想出了如何做到这一点。以为我会分享,以帮助像我这样的其他人:

<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>   
于 2010-03-03T16:29:10.183 回答
1

另一种方式:

    <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

      }
于 2011-03-28T10:10:39.070 回答
1

多谢你们,

只要确保你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 文件名

于 2012-10-29T21:59:11.907 回答
0
<s:List id="lstDesc"  width="100%" height="100%">

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

</s:List>

在闪存生成器中。

于 2013-08-27T17:00:13.460 回答
0

这太复杂了,这里有一个更好的方法:

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

嘘呀。

于 2011-08-02T21:58:53.497 回答