我有两个带有自定义项目渲染器的 Spark 列表。我正在开发一款应用程序,该应用程序使用户能够将这些项目渲染器从一个列表拖动到另一个列表。当这些 IR 之一被放到新位置或另一个列表中时,我将更新数据提供程序:我从一个列表的数据提供程序中删除对象并将其添加到另一个列表的数据提供程序中。这工作正常。
问题在于,有时 IR 会被缓存,但根据其数据,它不会显示正确的信息。
如何强制列表从不缓存 IR,以便每次修改数据提供程序时,所有项目渲染都会重新创建所有 IR。性能不会成为问题,因为每个列表上的项目很少。
最佳答案
一些事情..
1) ItemRenderers 应始终被缓存[并重用]。这是使用 Flex 列表的首要好处之一。我怀疑您的 itemRenderer 实现不正确,以至于在数据更改时不会更改。如果您为此分享一些代码将会很有帮助。但是,基本上,您的 itemRenderer 应该监听 dataChange 事件,并且当数据更改时,您应该使用新数据更新组件的视觉显示。
2) 在 Flex 3 中,我发誓将一项从一个列表拖动到另一个列表会自动更新相关的 dataProvider。您确定需要编写手动代码来进行这些更改吗?不过,您将需要代码来更新相关的后端。
关于actionscript-3 - 避免 Flex 4 中 Spark 列表中的 ItemRender 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692010/