2010-02-10 39 views
0

我正在使用我自己的項目渲染器來顯示xml文件的LIST容器。現在,我在我的項目渲染器中覆蓋了public override function set data(value:Object):void方法,問題是這個函數被多次調用(!!)(超過了數據提供者的長度)。什麼時候是正確的點(從生命週期視圖)設置Flex 3上的LIST容器的數據provier 3

也許我不會設定數據提供正確的,這裏是我如何做到這一點:

首先聲明綁定屬性:

[Bindable] 
private var _listDataProvider:XMLListCollection; 

然後,創建列表對象:

<mx:List id="list" dataProvider="{_listDataProvider}" itemRenderer="myItemRenderer" /> 

然後,加載xml(使用urlLoader)並在結果中執行:

_listDataProvider = new XMLListCollection(xml..Person); 

XMLListCollection構建好(我可以在調試中看到它)。

我在做什麼錯?

感謝球員...

回答

1

它看起來我的權利,我有一種感覺,Flex 3的名單及相關數據提供程序組件將每個項目的幾次設定的數據渲染器的第一輪(效率低下的架構)。第一次,他們可能會將它設置爲null(是否發生?),然後下次他們可能將其設置爲該值。

要解決這個問題,只是這樣做:

public function set data(value:Object):void 
{ 
    if (super.data == value) 
     return; 
    super.data = value; 
} 

這應該做的伎倆。

相關問題