Flex List控件多于String?

时间:2008-12-04 20:30:09

标签: flex actionscript-3 user-interface list

我有一个列表控件,我想显示一个字符串(很好),但也有彩色方块。

想象一下,我有一个“添加播放器”按钮,带有颜色选择器的文本输入。我想在列表中看到颜色+玩家名称。我怎么能这样做?

[Bindable]
public var data:ArrayCollection = new ArrayCollection();  


<mx:List id="eqlist" width="100%" dataProvider="{data}" />



data.addItem(fooTxt.text);

这段代码只会添加文本值,我应该添加一个由彩色画布+文本值组成的hbox对象吗?

谢谢,

1 个答案:

答案 0 :(得分:7)

您必须使用List itemRenderers。 基本上,List项目渲染器(ListItemRenderer)不支持每个项目的不同背景颜色(背景颜色只能在List父级上设置)。

示例(MXML版本 - 不是我最喜欢的方式,但最简单):

数据提供程序初始化:

            var anObject: Object = new Object();
            anObject.label = "my player";
            anObject.backgroundColor = 0xFF0000;
            anObject.color = 0xFFFFFF;
            aData.addItem(anObject);

            anObject = new Object();
            anObject.label = "my player 2";
            anObject.backgroundColor = 0x0000FF;
            anObject.color = 0xAAAAAA;
            aData.addItem(anObject);

列表显示:

    <mx:List id="eqlist" width="100%" dataProvider="{aData}" >
        <mx:itemRenderer>
            <mx:Component>
                <mx:Canvas backgroundColor="{data.backgroundColor}"
                    color="{data.color}">
                    <mx:Label text="{data.label}">

                    </mx:Label>
                </mx:Canvas>
            </mx:Component>
        </mx:itemRenderer>
    </mx:List>