Flex - Tilelist с первым элементом как Button, а все остальные как Image - PullRequest
0 голосов
/ 09 февраля 2012

мне нужна помощь с чем-то Мне нужен TileList, который имеет в своей первой позиции / элементе кнопку, а во всех других элементах изображение для каждого. Ну, после проблем с темой Plastic и s: List (проблема со списком скроллера) я сдался и начал работать с TileList. Я использую пользовательский элемент Renderer для TileList. Это довольно просто, но я думаю, что делаю что-то не так.

dataProvider для TileList в ArrayCollection, составленный из первого элемента класса String, а все остальные являются пользовательским классом, расширяющим класс изображения. лайк: обр = [ "Ы", изображение, изображение .....];

Не знаю почему, но мой TileList отображает правильную кнопку в своем первом элементе, но после этого он отображает более 2 изображений элементов, затем четвертый элемент с правильным изображением, но с кнопкой, и это шаблон. ... после 3 правильных пунктов следующий идет с кнопкой ....

мой пользовательский ItemRenderer:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"

     horizontalAlign="center"
     verticalAlign="middle"
     creationComplete="init()">
<mx:Script>
    <![CDATA[
        import mx.controls.Button;
    protected function init():void
    {
        if(this.data == "bt")
        {
            var bt:Button = new Button();
            bt.id = "btEnviar";
            bt.width=84;
            bt.height=28;
            bt.label = "Enviar Fotos"; 
            addElement(bt);

        }

    }
    ]]>
</mx:Script>
<mx:Image id="img" source = "{data}"/>

Я действительно ценю, если кто-то может помочь ... я ничего не нашел в интернете.

спасибо!

1 Ответ

0 голосов
/ 09 февраля 2012

Похоже, проблема виртуального макета. Это означает, что рендерер используется повторно. Если они не будут повторно инициализированы (например, удалите ваш элемент bt), могут произойти подобные вещи. Также я предлагаю вам переопределить данные публичной функции (значение: Object): void и поместить туда свой код. Вы также можете отключить виртуальный макет, если действительно хотите (useVirtualLayout = false в вашей группе данных / списке).

В настоящее время у меня мало времени, чтобы объяснить это, но я предлагаю вам взглянуть на свойство itemRendererFunction группы данных. Эта функция возвращает ClassFactory, определяющий тип средства визуализации элементов для использования в зависимости от данных.

Вот ссылка на это из ссылок Adobe: Работа с средствами визуализации элементов . См. Раздел «Использование функции визуализации элементов с контейнером Spark».

...