2016-10-19 14 views
0

私はmxmlでリストを持っています。ユーザーがリスト内の項目を長押ししたときに、メニューを表示する必要があります。メニューには、押された項目に対する何らかのアクションが表示されます。Mouse DownイベントのFlex Listのリストへの参照を取得する方法

また、押された項目をリスト内の選択した項目にする必要があります。だから私はリストへの参照が必要です。私は通常の方法でリストにアクセスすることができないので、私はこれをしました:

どれが当惑していますか。私はリストへの参照を得るためのより良い方法を探しています。私はよく分からないが、ちょうどトリックを行うのitemRendererのれるonmousedownで選択したプロパティを設定しません

<s:List id="catList" x="0" y="0" width="100%" height="100%" click="selectItemHandler(event)"> 
    <s:itemRenderer> 
     <fx:Component> 
      <s:IconItemRenderer 
       styleName="labelFontStyle" 
       messageStyleName="descriptionFontStyle" 
       labelField="labelField" 
       messageField="descriptionField" 
       dataChange="onDataChange(event)" 
       mouseDown="onMouseDown(event)"> 
       <fx:Script> 
        <![CDATA[ 
         import mx.events.FlexEvent; 
         protected function onMouseDown(event:MouseEvent):void 
         { 
          try 
          { 
           var tg:Object = event.target; 
           var selectedItem:Object = event.currentTarget.data; 
           if (selectedItem != null) 
           { 
            // Here I need to set the selectedItem property of 
            // the owning list. 
            // I don't know how to get to the list so I did this. 
            var list:Object = event.currentTarget.parent.parent.parent.parent.parent; 
            list.selectedItem = selectedItem; 
           } 
          } catch (e:Error) {} 
         } 
        ]]> 
       </fx:Script>     
      </s:IconItemRenderer> 
     </fx:Component> 
    </s:itemRenderer> 
</s:List> 
+0

リストはmxmlファイルの最上位オブジェクトですか? – CyanAngel

+0

@CyanAngel、ルートオブジェクトは、リストが動作したときにビュー – Asimov

答えて

2

:ここ

は、リストのための私のコードですか?

selected = true; 

されていない場合、これはあなたのリストを取得するかどうかを確認:

var myList:List = owner as List; 

別のアプローチは、あなたのアイテムが含まれているカスタムイベントを作成し、するitemRendererからそれを発射するだろう。次に、リストでそのイベントをリッスンし、selectedItemプロパティをイベントのアイテムに設定します。

+0

の所有者です。どうもありがとう! – Asimov

関連する問題