2010-10-06 53 views
0

我需要檢測Flex Spark List(spark.components.List)數據何時發生更改,以便以編程方式更改其滾動條。 我知道List是一個EventDispatcher,但不清楚我會註冊哪個事件。當Flex Spark List的數據發生變化時檢測到

編輯:我的列表dataProvider是一個ArrayCollection,也添加了元素。所以dataProvider永遠不會被替換。我認爲監聽支持ArrayCollection,但是List可能會在我的偵聽器(它改變了滾動條)之後對更改做出反應。因此,我的聽衆的變化將被列表所取代。

+0

您如何定義數據更改?當dataProvider被替換時? dataPRovider何時刪除或添加了元素?或者是其他東西? – JeffryHouser 2010-10-06 18:07:11

+0

我正在使用相同的dataProvider實例。當我需要修改列表時,我只需從dataProvider中添加/刪除數據。 – 2011-05-13 06:28:45

回答

1

爲什麼不添加一個EventListener到ArrayCollection並給它一個高priority?這將允許您監聽數據收集本身的更新事件,並強制您的監聽器首先發生。

編輯:我沒有嘗試過這個自己:^)

0

我不知道,如果它仍然是這樣還是不行!但你可以做到以下幾點: 爲你的火花列表實施itemRenderer並使用itemRenderer的'dataChange'屬性來查看你的數據何時被更改? 事情是這樣的:

列表:

<s:List id="myList" dataProvider="{myArrayCollection}" 
     itemRenderer="myItemRenderer" ...> 
</s:List> 

現在對你的itemRenderer

<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      dataChange={invalidateDisplayList()} > 
</s:ItemRenderer> 

例如在我的情況,我想刪除我的列表中的每個項目,之後,我的itemRenderer可以通過'dataChange'自動更新自己...
雖然你可以使用o諸如invalidateSize()invalidateLayering()等關於您的需求。

相關問題