2010-12-14 7 views
1

フレックス4では、アイテムレンダラーを持つスパークリストコンポーネントがあります。 私はをクリックしてリスト内のアイテムを選択し、同じく選択したアイテムをクリックして選択を解除します。オン/オフスイッチのように。フレックス4 - <s:List>と同じアイテムを選択して解除する

マイアイテムレンダラーには、以下の状態があります

<s:states> 
<s:State name="normal"/> 
<s:State name="hovered"/> 
<s:State name="selected"/> 
</s:states> 

ので、私はアイテムレンダラーにclickイベントリスナーを追加しようとしました:ぎこちない動作で

private function selectUnSelect():void { 
if (currentState == 'selected') currentState = 'normal'; 
else currentState = 'selected'; 

}

...選択した状態で項目を再度クリックしても項目が選択されたままになります。

コマンド(Macの場合)またはウィンドウのコントロールボタンを使用せずにリストコンポーネントを使用すると考えてください。

+0

それは、項目が選択されたかどうかを示すでしょう、あなたの根底にあるのdataProviderにプロパティを追加することは可能でしょうか?何かが好きです:public var isSelected:Boolean = true? –

答えて

1

アイテムレンダラーに状態を設定させるのではなく、リスト自体を操作します。アイテムレンダラーは、アイテムレンダラーのデータを含むイベントがクリックされたときにディスパッチし、そのイベントのリスナーを追加します(Listを拡張するコンポーネントまたはリストを含むコンポーネント)。データがリストのselectedItemのいずれかと一致するかどうかを確認できます。そうでなければ、selectedItemsに項目を追加します。その場合は、selectedItemsから削除します。希望が役立ちます。