2011-09-24 77 views
2

我有一個Spark列表,它具有用於呈現列表中的每個項目的自定義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; 
    } 
}