Определить, когда изменились данные Flex Spark List - PullRequest
0 голосов
/ 06 октября 2010

Мне нужно определить, когда изменились данные Flex Spark List (spark.components.List), чтобы я мог программно изменить его полосу прокрутки.Я знаю, что List - это EventDispatcher, но неясно, на какое событие я буду регистрироваться.

Редактировать: dataProvider в моем List - это ArrayCollection, элементы которого также добавляются.Таким образом, dataProvider никогда не заменяется.Я подумал о том, чтобы прослушать резервную копию ArrayCollection, но возможно, что List будет реагировать на изменения после моего слушателя, который изменяет полосу прокрутки.Таким образом, изменения моего слушателя будут заменены изменениями в списке.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Почему бы не добавить EventListener в ArrayCollection и присвоить ему высокий приоритет ? Это позволит вам прослушивать события обновления в самом сборе данных и вынудит вашего слушателя произойти первым.

Редактировать : Я сам не пробовал: ^)

0 голосов
/ 29 августа 2013

Я не знаю, так ли это до сих пор или нет!Но вы могли бы сделать следующее: Реализовать itemRenderer для своего списка искр и использовать атрибут dataChange вашего itemRenderer, чтобы увидеть, когда ваши данные были изменены?Примерно так:

Ваш список:

<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() и т. д.необходимо.

...