使用XML子节点作为Spark列表itemRenderer中的标签

时间:2011-01-19 04:08:24

标签: xml flex label itemrenderer

在ActionScript中,我将XML缩减为一系列节点,所有节点都形成如下:

<option letter="A">
    <letter>A</letter>
    <response>Thank you</response>
    <posFeed>Excellent</posFeed>
    <negFeed>Terrible</negFeed>
    <score>-1</score>
    <elimOptions>B</elimOptions>
</option>

当我将此系列设置为使用带有Spark标签的自定义项目渲染器的Spark列表的dataProvider时,我设置了label.text = {data},它将每个完整的节点集显示为列表项。< / p>

如果我不想事先将XML简化为节点(我希望我必须完成其他函数的完整集),我怎样才能将响应节点设置为数据到用于itemRenderer中的标签?我尝试设置标签text = {data.response},但这不起作用(一组完整的节点仍然显示为每个列表项。

1 个答案:

答案 0 :(得分:0)

像这样:

<fx:Declarations>
    <fx:XML id="data">
        <options>
            <option letter="A">
                <letter>A</letter>
                <response>Thank you</response>
                <posFeed>Excellent</posFeed>
                <negFeed>Terrible</negFeed>
                <score>-1</score>
                <elimOptions>B</elimOptions>
            </option>
            <option letter="B">
                <letter>B</letter>
                <response>Thank you B</response>
                <posFeed>Excellent B</posFeed>
                <negFeed>Terrible B</negFeed>
                <score>-1</score>
                <elimOptions>B</elimOptions>
            </option>
        </options>
    </fx:XML>
</fx:Declarations>

<s:List labelField="response">
    <s:dataProvider>
        <s:XMLListCollection source="{data.option}" />
    </s:dataProvider>
</s:List>

我应该补充说,当我这样做时,我在使用自定义项目渲染器时没有遇到任何问题:

<s:List itemRenderer="DataItemRenderer">
    <s:dataProvider>
        <s:XMLListCollection source="{data.option}" />
    </s:dataProvider>
</s:List>

<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="{data.response}"/>

</s:ItemRenderer>