【发布时间】:2011-08-03 19:46:50
【问题描述】:
我遇到了 Spark 列表的问题,我试图确保始终选择某个项目并确保 GUI 将其显示给用户。
应用程序(下面的完整代码)创建一个列表、一个标签和一个按钮。标签说明在列表中选择的内容。该按钮删除选定的项目。更改选择,更新标签中的文本。 重要提示:List 将“requireSelection”设置为 true,以确保始终选择项目。
如果我选择列表中的第一项,则选择会正确反映在标签中。单击“删除”将删除该项目并选择下一个项目。这一切正常。
如果我选择第一个以外的任何项目,然后单击“删除”,列表将显示为好像没有选择一样。但是,标签显示第一个项目已被选中。如果我尝试选择项目 1(通过单击它),似乎什么都没有发生(即该项目看起来没有被选中)。如果我单击任何其他项目,它会正确选择并且列表似乎再次开始工作。
帮助。这是一个错误还是我需要手动“踢”列表?我应该使用“requireSelection”来强制选择吗?
谢谢,
菲尔
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
initialize="init()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
private function init():void {
myList.addEventListener(FlexEvent.VALUE_COMMIT, updateSelectionLabel);
var ac:ArrayCollection = new ArrayCollection()
ac.addItem("Adam");
ac.addItem("Bob");
ac.addItem("Charlie");
ac.addItem("Dave");
myList.dataProvider = ac;
}
private function updateSelectionLabel(event:Event):void {
selectedItemLabel.text = myList.selectedItem.toString();
}
protected function removeClicked(event:MouseEvent):void {
myList.dataProvider.removeItemAt( myList.selectedIndex );
}
]]>
</fx:Script>
<s:List id="myList" x="10" y="10" width="300" height="120"
requireSelection="true"/>
<s:Label x="10" y="140" id="selectedItemLabel" text="-selectedItem-"/>
<s:Button x="10" y="160" label="Remove Selected Item" click="removeClicked(event)"/>
</s:Application>
【问题讨论】:
标签: list apache-flex selection flex-spark