我怎么知道什么时候火花项目回收与数据更新?

时间:2010-10-18 22:12:55

标签: flex actionscript flex4

在DataGroup中使用自定义itemrenderer时,如何区分数据提供程序更新和要回收的itemrender?

我已经覆盖了自定义项呈示器的set data函数,但是我发现在对用作DataProvider的ArrayCollection进行更改时,某些项呈示器未分配与更新之前相同的对象。这使我几乎不可能区分数据更新和被回收的项目。此外,数据似乎永远不会被设置为value = null,因此似乎也是如此。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定你的确切要求。

渲染器回收是更改渲染器数据的过程,通常是在滚动基于列表的类时。这是出于性能原因,因此只显示在scree上显示的项目,而不是屏幕上显示的项目。渲染器回收用于模拟滚动列表而不实际执行此操作。

当您替换dataProvider时,它会更新所有渲染器。更改dataProvider时,它可能会更新某些渲染器,具体取决于更改的内容。我已经浏览了dataGroup代码,因此我不确定它对更新的确切作用,但Halo listBased类实现了collectionChange事件处理程序来处理这些更改。我怀疑DataGroup做了类似的事情。

为什么您需要知道渲染器数据的更改原因?渲染器应该只关心它被更改了。

答案 1 :(得分:0)

有一个dataChange事件在对{data}提供程序进行更改时会冒泡。

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                autoDrawBackground="true" width="142" height="22" dataChange="WHATEVERYOUWANT"