检测Flex Spark List的数据何时发生变化

时间:2010-10-06 18:03:51

标签: flash flex flex-spark

我需要检测Flex Spark List(spark.components.List)数据何时发生更改,以便我可以以编程方式更改其滚动条。 我知道List是一个EventDispatcher,但我不清楚我要注册哪个事件。

编辑:我的列表的dataProvider是一个ArrayCollection,也添加了元素。所以dataProvider永远不会被替换。我考虑过监听后备ArrayCollection,但是我的侦听器可能会对更改做出反应,这会改变滚动条。因此,我的听众的改变将被列表的改变所取代。

2 个答案:

答案 0 :(得分:1)

为什么不将EventListener添加到ArrayCollection并给它一个高priority?这将允许您监听数据集合本身的更新事件,并强制您的侦听器首先发生。

编辑:我自己没试过:^)

答案 1 :(得分:0)

我不知道是否仍然如此!但你可以这样做: 为您的spark列表实现 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'自动更新自己... 虽然您可以使用invalidateSize()invalidateLayering()等其他人来满足您的需求。