2011-09-24 11 views
2

私は、リスト内の各アイテムをレンダリングするためのカスタムitemRendererを持つスパークリストを持っています。 そのリスト内の項目が(カスタムロジックに基づいて)選択されないようにしたいと考えています。スパークリストの特定のアイテムの選択を防止する

私はこれを達成するための最良の方法は何ですか?ここで

は私のリストが定義されている方法は次のとおりです。

そしてもちろん、私はクラスcom.sample.MyItemRendererとして定義アイテムレンダラーを持っています。

答えて

3

アイテムの選択は、私が知る限りリストだけで処理されるため、そこから管理することができます。私はリストにあるオブジェクトのフィールドを「選択可能」とか、そのようなものとし、リストアイテムが変化しているときに新しいアイテムが実際に選択可能かどうかをチェックし、そうでなければそれを持つことができます選択をクリアするか、前の選択にリセットします。次のように

protected function myList_changingHandler(event:IndexChangeEvent):void { 
    var newItem:MyObject = myList.dataProvider.getItemAt(event.newIndex) as MyObject; 
    if(!newItem.selectable) { 
     event.preventDefault(); 
    } 
} 

// Jumping ahead ... 

<s:List id="myList" changing="myList_changingHandler(event)" // ... continue implementation 

MyObjectにクラスの関連部分は次のとおりです:次のようにIndexChangeEventにリストコンポーネントの「変更」イベントに反応して「でpreventDefault」を呼び出すことによって、それを達成することができます

public class MyObject { 

    private var _selectable:Boolean; 

    public function MyObject(){ 

    } 

    public function set selectable(value:Boolean):void { 
     _selectable = value; 
    } 

    public function get selectable():Boolean { 
     return _selectable; 
    } 
} 
関連する問題