2011-07-05 61 views
0

我在这个问题上疯了。基本上,我有一个TileList与自定义项目渲染器,其中有一个TextInput。假设列表可以一次显示4个项目,如果有5个项目并且我在第一个项目上编辑文本,第五个项目也会被编辑。一般来说,如果一个项目不在视图中,当我编辑正在显示的项目时,它将会发生变化。Flex TileList itemrenderer + scroll = HELL

此外,我已经覆盖了TileList类来公开rendererArray属性(以便我可以访问每个渲染器上的文本),但它只会返回显示的渲染器。

任何帮助表示赞赏。我需要知道如何用当前未显示的itemrenderer覆盖这种奇怪的行为。谢谢。

+0

哇,你确定dataProvider中的数据对象不是交叉连接吗? –

+0

我不认为他们是,我尽可能手动创建它们并为每个属性设置不同的属性。我怀疑它与重用有关。 – JayPea

+0

如果我使组件长到足以显示全部5个项目,问题就会消失。有没有办法强制TileList一次创建所有的渲染器,而不是重用它们? – JayPea

回答

1

好吧,如果有人跑进类似的问题,这里是你需要做什么:

首先,避免试图通过itemRenderer的像我一样进行迭代。如果您需要TileList上的TextInput或其他控件,请确保这些控件绑定到数据对象上的属性,否则屏幕外项目将具有不正确的值,因为它们的itemrenderer会从离开屏幕的项目中回收你滚动。

如果您认真思考,可以通过遍历dataprovider而不是itemrenderer来解决任何需求。另外,如果您尝试像我一样公开rendererArray属性,请注意,您将只能遍历当前显示的itemrenderer,因为那些属于不在屏幕的项目将不会尚未创建。

我希望这不是太混乱..