我需要帮助 我需要一个TileList,它在第一个位置/项目中有一个按钮,在所有其他项目中都有一个图像。 好吧,在遇到Plastic theme和s:List(滚动条列表的问题)问题后,我放弃了并开始使用TileList。 我正在为TileList使用自定义项Renderer。这很简单,但我认为我做错了。
由String类第一项组成的ArrayCollection中TileList的dataProvider,以及所有其他类扩展Image Class的自定义类。 喜欢: ARR = [ “BT”,图像,图像.....];
我不是没有原因,但我的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}"/>
我真的很感激,如果有人可以提供帮助......我在互联网上一无所获。
谢谢!
答案 0 :(得分:0)
似乎是一个虚拟布局问题。这意味着渲染器可以重复使用。如果它们没有重新初始化(例如:删除你的bt元素),这样的事情就会发生。另外,我建议你覆盖公共函数数据(value:Object):void并将你的代码放在那里。如果您真的想要(在DataGroup / List上使用VirtualLayout = false),也可以禁用虚拟布局。
我目前没有太多时间解释它,但我建议您查看DataGroup的itemRendererFunction属性。此函数返回一个ClassFactory,它定义要使用的项呈示器的类型,具体取决于数据。
以下是Adobe参考文献中的链接:Working with item renderers。请参阅“使用带有Spark容器的项呈示器功能”部分。