Flex - Tilelist с первым элементом как Button, а все остальные как Image
Мне нужна помощь с чем-то, мне нужен TileList, в котором в первой позиции / элементе есть кнопка, а во всех других элементах - изображение для каждого. Ну, после проблем с темой Plastic и s:List (проблема со списком скроллера) я сдался и начал работать с TileList. Я использую пользовательский элемент Renderer для TileList. Это довольно просто, но я думаю, что делаю что-то не так.
DataProvider для TileList в ArrayCollection состоит из первого элемента класса String, а все остальные являются пользовательским классом, расширяющим класс Image. например: arr=["bt",Image,Image.....];
Я не знаю почему, но мой 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 ответ
Похоже, проблема виртуального макета. Это означает, что рендерер используется повторно. Если они не будут повторно инициализированы (например, удалите ваш элемент bt), могут произойти подобные вещи. Кроме того, я предлагаю вам переопределить данные публичной функции (значение:Object):void и поместить туда свой код. Вы также можете отключить виртуальный макет, если вы действительно этого хотите (useVirtualLayout = false в вашей группе данных / списке).
У меня не так много времени, чтобы объяснить это в данный момент, но я предлагаю вам взглянуть на свойство itemRendererFunction группы данных. Эта функция возвращает ClassFactory, определяющий тип средства визуализации элементов для использования в зависимости от данных.
Вот ссылка на это из ссылок Adobe: Работа с визуализаторами элементов. См. Раздел "Использование функции визуализации элементов с контейнером Spark".