2010-02-19 12 views
5

में स्पार्क सूची नियंत्रण में क्लिक ईवेंट कैसे संभाल सकता हूं मेरे पास एक सूची है: सूची घटक। मैं एक क्लिक इवेंट को संभालना चाहता हूं यह जानने के लिए कि कौन सी सूची आइटम चुना गया है। मुझे एस: सूची में क्लिक इवेंट नहीं दिखाई देता है। कोई कामकाज?मैं फ्लेक्स 4

धन्यवाद।

उत्तर

1

मुझे लगा कि यह कैसे करें। सोचा था कि मैं यह है कि यह मेरे जैसे अन्य लोगों में मदद करता है ताकि साझा करेंगे:

<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

मैं जानता हूँ कि मैं देर से पार्टी के लिए यहाँ हूँ, लेकिन सबसे आसान तरीका एक क्लिक करें घटना में सूची से चयनित नोड पाने के लिए 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

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 

     } 
4

आप सूची IndexChangeEvent.CHANGE उपयोग कर सकते हैं http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html

पैकेज spark.events कक्षा सार्वजनिक वर्ग IndexChangeEvent विरासत IndexChangeEvent घटना वस्तु

भाषा संस्करण: ActionScript 3.0 उत्पाद संस्करण: फ्लेक्स 4 रनटाइम संस्करण: फ्लैश प्लेयर 10, एयर 1.5

इंडेक्स ChangeEvent क्लास उन घटनाओं का प्रतिनिधित्व करती है जो एक स्पार्क घटक में एक इंडेक्स बदलते समय प्रेषित होते हैं।

भी देखें

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

+0

Robotlegs के साथ उन लोगों के लिए: * eventMap।mapListener (yourView, IndexChangeEvent.CHANGE, yourListener, IndexChangeEvent); * –

0

farrrr यहाँ बहुत जटिल है कि एक बेहतर तरीका है:

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

बू या।

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 समारोह में चला जाता है दृश्य आपको फ़्लैश बिल्डर में

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

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

</s:List> 

लोड करना चाहते हैं के लिए MXML फ़ाइल नाम से मेल खाती है।