【发布时间】:2012-02-14 01:46:34
【问题描述】:
我有一个作为 CallOutContent 一部分的火花列表,就像这样:
<s:CalloutButton id="frequencyChanger" label="{frequencyChangeList.selectedItem.label}">
<s:calloutContent>
<s:BorderContainer>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:List id="frequencyChangeList" dataProvider="{Util.getFrequencyList()}" selectedIndex="8" requireSelection="false" changing="frequencyList_changingEvent(event)"/>
</s:BorderContainer>
</s:calloutContent>
</s:CalloutButton>
dataProvider 是一个 ArrayList,具有以下结构的若干项:
public class ListItem
{
public var label:String;
public var item:Object;
public function PeriodFrequencyListItem(label:String, item:Object) {
this.label=label;
this.item=item;
}
}
项目对象是一个枚举。 这样做的背景是将 Enum 与要在 List 中显示的相应标签匹配。我会使用字典,但列表对这些不起作用(不幸的是)。
无论如何,在 IndexChangeEvent 方法中,我可以将 selectedItem 设置为当前选择的项目: frequencyChangeList.selectedItem = event.currentTarget.selectedItem;
我不能做(但在类的另一部分迫切需要)是在 IndexChangeEvent 方法之外设置 List 的 selectedItem。 任何设置类似以下内容的项目的尝试都失败了,抛出了一个空指针异常。
frequencyChangeList.selectedItem = someListItemObject;
我可以设置 CallOutButtons 的标签,自然不会改变列表的选择。 那么,在列表中选择其自己的“更改”方法之外的项目的技巧在哪里?
任何帮助将不胜感激。 干杯!
【问题讨论】:
-
真的没有人知道如何在 List 中设置项目吗?
标签: list mobile flex4 selecteditem flex-spark