Flex 4 - Select&amp;使用mousedown </s:list>取消选择<s:list>中的相同项目

时间:2010-12-14 18:12:27

标签: flex list flex4 mxml unselect

在Flex 4中,我有一个包含项目渲染器的Spark 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';

}

行为尴尬......即使在选定状态下再次点击该项目,该项目也会保持选中状态。

考虑使用不带Command的List组件(在mac上)或Windows上的Control按钮。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

我不会让项目渲染器设置其状态,而是操作List本身。让项目渲染器在单击时调度包含项目渲染器数据的事件,然后为该事件添加侦听器(在扩展List的组件中或包含列表的组件中)。然后,您可以检查数据是否与List的selectedItems匹配。如果不是,请将该项追加到selectedItems。如果是这样,请将其从selectedItems中删除。希望有所帮助。