2010-02-19 45 views

Trả lời

1

Tôi đã tìm cách thực hiện việc này. Nghĩ tôi sẽ chia sẻ để nó giúp những người khác như tôi:

<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

Tôi biết tôi là muộn để bên đây, nhưng cách đơn giản nhất để có được những nút chọn từ danh sách trong một sự kiện nhấp chuột là sử dụng currentTarget bất động sản.

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

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

see:

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

1

Một cách khác:

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

trên tạo ứng dụng hoàn chỉnh:

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

Bạn có thể sử dụng IndexChangeEvent.CHANGE vào Danh sách http://docs.huihoo.com/flex/4/spark/events/IndexChangeEvent.html

Gói spark.events lớp public class IndexChangeEvent Inheritance IndexChangeEvent Event Object

Language Version: ActionScript 3.0 Version sản phẩm: Flex 4 Phiên bản thời gian chạy: Flash Player 10, AIR 1.5

Chỉ mục Lớp ChangeEvent đại diện cho các sự kiện được gửi đi khi một chỉ mục thay đổi trong thành phần Spark.

Xem thêm

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

+0

Đối với những người có Robotlegs: * eventMap.mapListener (yourView, IndexChangeEvent.CHANGE, yourListener, IndexChangeEvent); * –

0

Đó là farrrr quá phức tạp ở đây là một cách tốt hơn:

<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

Thanks guys,

Chỉ cần chắc chắn List của bạn có id bộ biến của nó. Sau đó, bạn gọi hàm điều khiển nhấp chuột của bạn như thế này:

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

} 

Biến mà đi vào pushView chức năng tương ứng với tên file mxml cho quan điểm bạn muốn tải

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

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

</s:List> 

trong xây dựng flash.

Các vấn đề liên quan