2011-07-05 59 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,因爲那些屬於不在屏幕的項目將不會尚未創建。

我希望這不是太混亂..