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

リスト http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.htmlでIndexChangeEvent.CHANGEを使用できます

パッケージ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

于 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

That is farrrr too complex here is a better way:

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

于 2011-08-02T21:58:53.497 に答える
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 に答える