Apache flex 在flex4中的sparks列表控件中自动选择第一个索引

Apache flex 在flex4中的sparks列表控件中自动选择第一个索引,apache-flex,flex4,Apache Flex,Flex4,我有一个火花列表控件。它有一个数据提供者,显示来自twitter搜索的回复 我为变更处理程序创建了如下函数: protected function list_changeHandler(event:IndexChangeEvent):void { ta.text = coverflow.selectedItem.title; } 因此,每当我选择列表中的每个项目时,我都会看到消息(ta.text) 但是现在,我希望它自动单击/选择第一个项目并查看第一条消息(ta.text),而不是第一

我有一个火花列表控件。它有一个数据提供者,显示来自twitter搜索的回复

我为变更处理程序创建了如下函数:

protected function list_changeHandler(event:IndexChangeEvent):void
{
    ta.text = coverflow.selectedItem.title;
}
因此,每当我选择列表中的每个项目时,我都会看到消息(ta.text) 但是现在,我希望它自动单击/选择第一个项目并查看第一条消息(ta.text),而不是第一次手动单击


如何实现这一点?

实际上,考虑到这一点,您可能需要对列表进行子类化,并覆盖数据提供程序setter

override public function set dataProvider(data:*) : void {
  super._dataProvider = data;
  // This will be an ArrayCollection or XMLListCollection, so will have a length
  if (data && data.length > 0) {
    this.selectedIndex = 0;
    invalidateDisplayList();
  }
}

实际上,考虑到这一点,您可能需要对列表进行子类化,并覆盖数据提供者setter

override public function set dataProvider(data:*) : void {
  super._dataProvider = data;
  // This will be an ArrayCollection or XMLListCollection, so will have a length
  if (data && data.length > 0) {
    this.selectedIndex = 0;
    invalidateDisplayList();
  }
}

试试这个解决方案怎么样?:)

列表控件还具有事件名称
creationComplete
(类似于
change
事件)。尝试使用以下选项选择您的第一项:

protected function list1_creationCompleteHandler(event:FlexEvent):void
{
    if(event.target.dataProvider != null )
    {
        (event.target as List).selectedIndex = 0;
    }
}

您可能不需要将
事件.目标
转换为
列表
。但它可以帮助您在编码时访问代码完成

试试这个解决方案怎么样?:)

列表控件还具有事件名称
creationComplete
(类似于
change
事件)。尝试使用以下选项选择您的第一项:

protected function list1_creationCompleteHandler(event:FlexEvent):void
{
    if(event.target.dataProvider != null )
    {
        (event.target as List).selectedIndex = 0;
    }
}

您可能不需要将
事件.目标
转换为
列表
。但它可以帮助您在编码时访问代码完成

设置列表的数据提供程序,设置所选项目,然后使用null参数直接调用处理程序函数,或者使列表分派indexChanged事件,以便执行处理程序函数。

设置列表的数据提供程序,设置所选项目,然后使用null参数直接调用处理程序函数,或者使列表分派一个indexChanged事件,以便执行处理程序函数。

您应该在列表控件上将属性设置为true

<s:List id="myList" dataProvider="{myDataProvider}" requireSelection="true"/>

您应该在列表控件上将属性设置为true

<s:List id="myList" dataProvider="{myDataProvider}" requireSelection="true"/>


如果creationComplete上的数据提供程序为空,则此操作将失败。谢谢,Robusto。我根据您的建议改进了我的答案。我还建议您将作业写为
列表(event.target)。selectedIndex=0
这样你的intellisense就可以工作,语法检查器就不会发出警告。如果creationComplete上的数据提供程序为空,这将失败。谢谢,Robusto。我根据您的建议改进了我的答案。我还建议您将作业写为
列表(event.target)。selectedIndex=0
这样你的intellisense就可以工作,语法检查器就不会发出警告。除非他想在多个地方出现相同的行为,否则不需要子类化。除非他想在多个地方出现相同的行为,否则不需要子类化。