0

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

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

4

2 回答 2

1

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

编辑:我自己没有试过这个:^)

于 2010-10-06T18:35:57.803 回答
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”自动更新自身......
尽管您可以根据您的需要使用其他项目,例如invalidateSize(),invalidateLayering()等等。

于 2013-08-29T07:33:15.017 回答