選択した状態を無効にする必要がある ItemRenderer があります (レンダラーの状態を使用していて、選択した状態がありません)。問題は、「選択済み」状態でなくても、クリック時にリスト (スパーク) が項目レンダラーの状態をリセットすることです。
この動作を完全に防止したいのですが、方法がわかりません。私のレンダラーには autoDrawBackground が false に設定されていますが、有効にする必要があります (ただし、enabled=false はこの問題を修正します)。また、レンダラーには独自のリストを含むいくつかの子があります。レンダラーで mouseEnabled="false" を設定すると、レンダラー自体は修正されますが、その子は修正されません。一部の子をマウス対応にする必要があります。
編集:
以下は、私のアイテム レンダラーからの抜粋です。
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
width="100%" autoDrawBackground="false">
<s:states>
<s:State name="normal" />
<s:State name="suitable" />
<s:State name="mine" />
<s:State name="deleted" />
</s:states>
<s:Rect id="rect" top="0" right="0" bottom="0" left="0">
<s:fill>
<s:SolidColor id="background"
alpha=".8" alpha.deleted=".4"
color="0xff0000" color.suitable="0x00ff00" color.mine="0x0000ff" />
</s:fill>
</s:Rect>
<s:Label id="name" left="4" top="4" right="40" />
<s:List id="myList" left="4" top="40" right="4"
contentBackgroundAlpha="0" borderVisible="false" horizontalScrollPolicy="off">
<s:layout>
<s:VerticalLayout gap="3" paddingBottom="4" requestedMinRowCount="2" />
</s:layout>
</s:List>
</s:ItemRenderer>
2番目の編集:
マウスのホバー状態でも同じ問題がありましたが、回避策があるようです:
override protected function set hovered(value:Boolean) : void
{
// do nothing (prevent current state from changing to "hovered" state)
}