Spark List重用错误的项目渲染器

时间:2010-02-09 17:24:13

标签: flex flex4 flex-spark

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

3 个答案:

答案 0 :(得分:4)

事实证明这是一个Flex SDK错误。 Peter DeHaan为我提供了一种解决方法(在设置dataProvider之后重新设置itemRendererFunction属性)并且正在为将来的SDK版本提交它。

答案 1 :(得分:0)

这里只是一些想法:

尝试invalidateProperties?看看源代码我有预感可能是这样,否则,或许只是开始调用你能找到的每一个无效方法,直到找到合适的方法。

另一种hacky解决方案可能是不采用当前滚动位置(通过List上的滚动条)传递一个新数组作为dataprovider(它肯定会重新创建项呈示器)然后将滚动位置设置为相同的在刷新之前。

或者您可以将不同项呈示器的选择抽象到项呈示器本身。 :/

答案 2 :(得分:0)

FWIW:这是Flex bug的链接: https://bugs.adobe.com/jira/browse/SDK-32018