Flex <s:list> Itemrender Index </s:list>

时间:2012-07-17 19:24:09

标签: flash flex indexing adobe itemrenderer

Flex(4.6)中的<s:List>项目渲染器中是否有一种方法可以在项目渲染器本身中识别列表中特定项目的索引?

我尝试使用类的itemIndex属性,但它总是返回零。另外,this example on SO给了我几个运行时错误。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

主要应用:

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    width="100%"
    height="100%"
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">
    <s:List itemRenderer="IndexedItemRenderer">
        <s:dataProvider>
            <s:ArrayList>
                <fx:String>Item A</fx:String>
                <fx:String>Item B</fx:String>
                <fx:String>Item C</fx:String>
                <fx:String>Item D</fx:String>
                <fx:String>Item E</fx:String>
            </s:ArrayList>
        </s:dataProvider>
    </s:List>
</s:Application>

IndexedItemRenderer项目渲染器:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    autoDrawBackground="true">
    <s:Label text="{itemIndex + 1}. {data}"/>
</s:ItemRenderer>

答案 1 :(得分:1)

我刚注意到itemIndex无效,因为在列表创建的生命周期中尚未设置其值。

在项目渲染器中,我正在侦听addedToStage事件,并在其处理程序中使用itemIndex。将addedToStage事件更改为creationComplete后,itemIndex就会有适当的值。

希望能有所帮助。