我需要检测Flex Spark List(spark.components.List
)数据何时发生更改,以便我可以以编程方式更改其滚动条。
我知道List是一个EventDispatcher,但我不清楚我要注册哪个事件。
编辑:我的列表的dataProvider是一个ArrayCollection,也添加了元素。所以dataProvider永远不会被替换。我考虑过监听后备ArrayCollection,但是我的侦听器可能会对更改做出反应,这会改变滚动条。因此,我的听众的改变将被列表的改变所取代。
答案 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()
等其他人来满足您的需求。