2010-08-03 68 views
0

我有一个Flex列表和一个自定义的ItemRenderer。我想能够有列表中的一些项目使用不同的ItemRenderer(比如说,取决于项目的类别)。这可能吗?我可以为不同的列表项目使用不同的ItemRenderer吗?

例如为:

<s:List dataProvider="{_systems}" itemRenderer="myItemRenderer"/> 

在_systems大多数项目使用myItemRenderer。但是,如果_systems的元素3是“specialSystem”,则渲染器将是“specialItemRenderer”。

这可能吗?

回答

1

您使用Canvas作为ItemRenderer并实现将自动创建其他控件的机制。 Different Items renderers in List

主要思路:

您创建特殊的ItemRenderer这 可以创建“模拟”其他控件, 在我们的情况下,它是子类

更多细节,你可以在这篇文章中找到帆布 ,它只是创建并添加所需的控制 控制。然后我们需要一些机制 来告诉我们的容器我们想要模拟哪个渲染器 ,为此我们使用ItemContainerData和 专用字段。

+1

这将是Flex 3 Halo列表的唯一方法。但Flex 4引入了itemRendererFunction,它将提供更清晰的实现。 – JeffryHouser 2010-08-03 17:51:28

相关问题