2010-02-19 4 views

Répondre

1

J'ai pensé comment faire ceci. Je pensais que je voudrais partager de manière à aider les autres comme moi:

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

Je sais que je suis en retard à la fête, mais la façon la plus simple pour obtenir le noeud sélectionné dans la liste dans un événement click est d'utiliser la currentTarget propriété.

function myClickHandler(event:MouseEvent):void{ 
    Alert.show("My Var: " + event.currentTarget.selectedItem.myVar); 
} 

<s:List ... click="myClickHandler(event);"> 
... 
</s:List> 

voir:

http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7cdb.html

1

Une autre façon:

<s:List id="myid" 
      dataProvider="{listDP}" 
      width="100%" 
      height="100%"/> 

sur la création d'applications complète:

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 

     } 
4

Vous pouvez utiliser la IndexChangeEvent.CHANGE sur la liste http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html

Paquet spark.events IndexChangeEvent Classe public class Héritage IndexChangeEvent événement objet

Version du langage: ActionScript 3.0 Version du produit: Flex 4 Versions du moteur d'exécution: Flash Player 10, AIR 1.5

L'index La classe ChangeEvent représente les événements distribués lorsqu'un index change dans un composant Spark.

Voir aussi

spark.components.supportClasses.ListBase spark.components.List spark.components.ButtonBar

+0

Pour ceux avec Robotlegs: * eventMap.mapListener (yourView, IndexChangeEvent.CHANGE, votreListener, IndexChangeEvent); * –

0

C'est farrrr ici aussi complexe est une meilleure façon:

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

1

Merci les gars,

Assurez-vous que votre List a son ensemble de variables id. Ensuite, vous appelez dans votre fonction de gestionnaire de clic comme ceci:

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 qui va dans la fonction pushView correspond au nom de fichier MXML pour la vue que vous voulez charger

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

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

</s:List> 

dans le constructeur de flash.

Questions connexes