Apache flex 火花列表重用错误的项目渲染器

Apache flex 火花列表重用错误的项目渲染器,apache-flex,flex4,flex-spark,Apache Flex,Flex4,Flex Spark,我有一个列表组件,它使用ItemRenderer函数确定的多个项目呈现器。当我第一次设置数据时,它按预期工作。然后,当我第二次使用新数据设置数据时,它不会调用ItemRenderFunction并尝试重用当前的渲染器,即使它们与数据不匹配。一旦我滚动,就会调用该函数并使用正确的渲染器。在设置数据之前,我尝试调用invalidateDisplayList等,但这并没有解决问题。有什么想法吗?这里有一些想法: 试着让房产失效?查看源代码,我有一种预感,可能是这样的,否则,可能只是开始调用所有可以找到

我有一个列表组件,它使用ItemRenderer函数确定的多个项目呈现器。当我第一次设置数据时,它按预期工作。然后,当我第二次使用新数据设置数据时,它不会调用ItemRenderFunction并尝试重用当前的渲染器,即使它们与数据不匹配。一旦我滚动,就会调用该函数并使用正确的渲染器。在设置数据之前,我尝试调用invalidateDisplayList等,但这并没有解决问题。有什么想法吗?

这里有一些想法:

试着让房产失效?查看源代码,我有一种预感,可能是这样的,否则,可能只是开始调用所有可以找到的invalidate方法,直到找到正确的方法为止

另一种常见的解决方案可能是将当前滚动位置的not(通过列表上的滚动器)作为数据提供程序传入一个新数组(它肯定会重新创建项目呈现器),然后将滚动位置设置为刷新前的位置


或者,您可以将不同项目呈现器的选择提取到项目呈现器本身中:/

以下是一些想法:

试着让房产失效?查看源代码,我有一种预感,可能是这样的,否则,可能只是开始调用所有可以找到的invalidate方法,直到找到正确的方法为止

另一种常见的解决方案可能是将当前滚动位置的not(通过列表上的滚动器)作为数据提供程序传入一个新数组(它肯定会重新创建项目呈现器),然后将滚动位置设置为刷新前的位置


或者,您可以将不同项目呈现器的选择提取到项目呈现器本身中:/

原来这是一个Flex SDK错误。Peter DeHaan为我提供了一个解决方案(在设置数据提供程序后重新设置ItemRenderFunction属性),并将其提交给SDK的未来版本。

事实证明这是一个Flex SDK错误。Peter DeHaan为我提供了一个解决方案(在设置数据提供程序后重新设置ItemRenderFunction属性),并将其提交给SDK的未来版本。

FWIW:以下是指向Flex bug的链接:
FWIW:这里是Flex bug的链接:

项目渲染器是不同类别的吗?我希望相同类型的ItemRenders可以重用。ItemRenders是不同类的吗?我希望相同类型的ItemRenders可以被重用。你能提供一个链接或详细信息来解决这个问题吗?我认为可能与我遇到的类似问题有关。每次设置List.dataProvider属性后,您都会执行以下操作。List.ItemRenderFunction=MyItemRenderFunction能否提供该解决方案的链接或详细信息?我认为可能与我遇到的类似问题有关。每次设置List.dataProvider属性后,您都应该执行以下操作:List.ItemRenderFunction=MyItemRenderFunction