【问题标题】:Flex set selectedItem in Spark list outside of IndexChangeEvent handlerFlex 在 IndexChangeEvent 处理程序之外的 Spark 列表中设置 selectedItem
【发布时间】: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


【解决方案1】:

您是否尝试过这样做:

myList.selectedIndex = indexOfArray;

看这里:

How do I make sure that there is always something selected in a Spark List?

【讨论】:

  • 不,我不久前就想通了。问题是在调用调用之前列表实际上并不存在。我为解决这个问题所做的就是一种解决方法。我制作了自己的自定义标注按钮并添加了一个属性,然后附上的列表只需将其 selectedIndex 设置为标注按钮中设置的属性。
猜你喜欢
  • 1970-01-01
  • 2012-05-05
  • 2011-08-11
  • 2011-06-15
  • 2011-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多