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