У меня есть список искр, который является частью 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.
Основанием для этого является сопоставление Enum с соответствующей меткой, которая будет отображаться в списке. Я бы использовал словарь, но эти списки не работают (к сожалению).
Так или иначе, в методе IndexChangeEvent я могу установить selectedItem на тот, который выбран в данный момент:
intervalChangeList.selectedItem = event.currentTarget.selectedItem;
Что я не могу сделать (но отчаянно нуждаюсь в другой части класса), так это установить selectedItem объекта List вне метода IndexChangeEvent.
Любая попытка установить элемент с чем-то вроде следующего провалилась, выдав исключение нулевого указателя.
frequencyChangeList.selectedItem = someListItemObject;
Я могу установить метки CallOutButtons, естественно, это не меняет выбор списка.
Итак, где же хитрость в выборе элемента в списке вне его собственного «изменяющегося» метода?
Любая помощь будет высоко ценится.
Ура!