Apache flex 我如何知道spark itemrender何时被回收或数据更新?

Apache flex 我如何知道spark itemrender何时被回收或数据更新?,apache-flex,actionscript,flex4,Apache Flex,Actionscript,Flex4,在数据组中使用自定义itemrenderer时,如何区分数据提供程序更新和回收的itemrender 我已经覆盖了自定义项呈现器的set data函数,但是我发现在更改用作数据提供程序的ArrayCollection时,一些项呈现器没有被分配到更新之前的相同对象。这使得我几乎无法区分数据更新和回收的itemrender。而且,数据似乎永远不会被设置为value=null,因此这似乎也是错误的 有什么想法吗?我不知道你到底问了什么 渲染器循环是更改渲染器数据的过程,通常在滚动基于列表的类时进行。这

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

我已经覆盖了自定义项呈现器的set data函数,但是我发现在更改用作数据提供程序的ArrayCollection时,一些项呈现器没有被分配到更新之前的相同对象。这使得我几乎无法区分数据更新和回收的itemrender。而且,数据似乎永远不会被设置为value=null,因此这似乎也是错误的


有什么想法吗?

我不知道你到底问了什么

渲染器循环是更改渲染器数据的过程,通常在滚动基于列表的类时进行。这是出于性能原因,所以只渲染屏幕上显示的项目,而不渲染屏幕外显示的项目。渲染器循环用于模拟在列表中滚动,而实际上并不这样做

替换数据提供程序时,它会更新所有渲染器。更改数据提供程序时,它可能会更新某些渲染器,具体取决于所做的更改。我已经阅读了数据组代码,所以我不确定它对更新的具体作用,但是基于Halo listBased的类实现了一个collectionChange事件处理程序来处理这些更改。我怀疑数据组也会做类似的事情


为什么需要知道渲染器数据更改的原因?渲染器应该只关心它是否已更改

我不知道你到底在问什么

渲染器循环是更改渲染器数据的过程,通常在滚动基于列表的类时进行。这是出于性能原因,所以只渲染屏幕上显示的项目,而不渲染屏幕外显示的项目。渲染器循环用于模拟在列表中滚动,而实际上并不这样做

替换数据提供程序时,它会更新所有渲染器。更改数据提供程序时,它可能会更新某些渲染器,具体取决于所做的更改。我已经阅读了数据组代码,所以我不确定它对更新的具体作用,但是基于Halo listBased的类实现了一个collectionChange事件处理程序来处理这些更改。我怀疑数据组也会做类似的事情


为什么需要知道渲染器数据更改的原因?渲染器应该只关心它是否已更改

当数据更改为{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"

当{data}提供程序发生更改时,会出现一个dataChange事件

<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"

我有一个windowshade组件作为项目渲染器的一部分。如果由于arraycollection中的数据更改而更新了数据,我希望保持窗口打开。如果它是因为组件的循环而改变的(一个打开的阴影从顶部滚到底部),那么我希望阴影变成关闭的。@Amarghosh感谢业力@rosswil您可能可以通过侦听父级的collectionChange事件来解决一些问题,但这会有点混乱,并且会破坏封装。我有一个windowshade组件作为项目渲染器的一部分。如果由于arraycollection中的数据更改而更新了数据,我希望保持窗口打开。如果它是因为组件的循环而改变的(一个打开的阴影从顶部滚到底部),那么我希望阴影变成关闭的。@Amarghosh感谢业力@rosswil你也许可以通过听家长的collectionChange事件解决问题,但这会有点混乱,会破坏封装。但是,当itemrender中的数据由于被回收而发生更改时,也会触发此事件。另一个选项是,如果您只希望在组件/呈现程序开始时发生此情况,请使用:CreationComplete另一个选项是,如果您只希望在组件/呈现程序开始时发生此情况组件/渲染器将使用:creationComplete我有一组复杂的多功能控件,我制作了一个itemRenderer,creationComplete是我用作压缩的,因为1)它只发生一次。2) 它发生在数据事件之后,3)控件准备好接收更改,我发现有时触发datachange时DropDownList未准备就绪。但是,当itemrender中的数据由于被回收而发生更改时,也会触发此事件。另一个选项是如果您只希望在组件/渲染器开始时发生此情况,则使用:CreationComplete另一个选项是如果您只希望发生此情况在组件/渲染器的开始使用:creationComplete我有一组复杂的多功能控件,我制作了一个itemRenderer,creationComplete是我用作压缩的,因为1)它只发生一次。2) 它发生在数据事件之后,3)控件准备好接收更改,我发现有时在触发数据更改时DropDownList还没有准备好。