Управление списком Flex больше, чем строка? - PullRequest
1 голос
/ 04 декабря 2008

У меня есть элемент управления списком, в котором я хочу показать строку (это хорошо), но также цветной квадрат.

Представьте, что у меня есть кнопка "Добавить игрока" для ввода текста с помощью палитры цветов. Я хочу видеть цвет + имя игрока в списке. Как я мог это сделать?

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


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



data.addItem(fooTxt.text);

Этот код будет только добавлять текстовое значение, если я добавлю объект hbox, состоящий из цветного холста + текстовое значение?

Спасибо

1 Ответ

7 голосов
/ 05 декабря 2008

Вам предстоит работать с List itemRenderers. В основном средство визуализации элементов списка (ListItemRenderer) не поддерживает разные цвета фона для каждого элемента (цвет фона можно установить только для родительского элемента списка).

Пример (версия 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>
...