我有一个Spark List,它有一个自定义itemRenderer
用于呈现List中的每个项目。
我希望防止用户选择该列表中的项目(基于某些自定义逻辑)。
我能做到这一点的最佳方式是什么?
以下是我的List的定义方式:
<s:List id="myList" itemRenderer="com.sample.MyItemRenderer" />
当然,我有一个项目渲染器被定义为类com.sample.MyItemRenderer
。
答案 0 :(得分:3)
据我所知,项目的选择仅由列表处理,所以我想你可以从那里管理它。我会在列表中名为“selectable”的对象上有一个字段,或类似的东西,当列表项更改时检查新项目是否实际可选,如果不是,那么你可以拥有它清除选择或重置为先前的选择。您可以通过对列表组件上的“更改”事件做出反应并在IndexChangeEvent上调用“preventDefault”来完成此操作,如下所示:
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类的相关部分如下:
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;
}
}