Flex中的ItemRenderer与Repeater

时间:2011-12-19 11:44:52

标签: actionscript-3 flex flex4 flex3

你们中的任何一个人都知道ItemRenderer和Repeater之间的区别。 两者的表现几乎相同。有什么不同吗?

2 个答案:

答案 0 :(得分:4)

  

你们中的任何一个人都知道ItemRenderer和。之间的区别   直放站。两者的表现几乎相同。有什么不同吗?

我不确定他们的表现如何,但如果没有看到你的代码,就很难判断。我会尝试解释这种差异;更确切地说;每个人都是。

引擎盖下一个itemRenderer是ClassFactory。工厂是创建其他类的类的设计模式。在Flex的上下文中,itemRenderers用于基于列表的类,例如DataGrid或List。基于列表的类接受dataProvider并仅呈现屏幕上显示的元素。滚动列表时,将重复使用itemRenderer生成的每个组件。我把这个渲染器称为回收。因此,实现itemRenderer以响应dataChange事件非常重要,因此它始终正确呈现它应该表示的数据。有关itemRenderer components的更多信息。

Repeater就像是MXML中的循环。使用转发器不提供基于列表的类所具有的任何“渲染器”益处。在循环中创建的所有内容都会立即渲染。

所以,假设您有一个包含100张图像的dataProvider。你有空间在屏幕上显示10个。使用基于列表的类,flex将渲染并加载10个图像;滚动列表时更改加载的内容。使用Repeater Flex将立即渲染并加载所有100个,即使并非所有这些都在屏幕上。

答案 1 :(得分:2)

最大的区别:Repeater已经已弃用已停止。它仅作为Flex 3中的 mx组件存在,并且Flex 4中没有Spark等效项。建议您使用DataGroup + ItemRenderer。在@ www.Flextras.com的回答中非常清楚地解释了这个问题的主要原因。

除此之外,IMO除了最基本的使用情况之外的任何事情都可能是一个严重的痛苦。它的范例与所有其他Flex组件完全不同,而DataGroup + ItemRenderer方法与Flex组件集非常一致。

底线:不使用中继器。使用DataGroup + ItemRenderer无法对Repeater执行任何操作。 (除非你因某些原因而被困在Flex 3中。请参阅Amy的评论以获取更多信息。)