Как я узнаю, когда искровой товарный рендер был переработан, а данные обновлены? - PullRequest
1 голос
/ 19 октября 2010

Как отличить обновление поставщика данных от перерабатываемого элемента данных при использовании настраиваемого элемента элементов данных в группе данных?

Я переопределил функцию набора данных пользовательского средства визуализации элементов, но обнаружил, что при внесении изменений в ArrayCollection, используемую в качестве DataProvider, некоторым средствам визуализации элементов не назначается тот же объект, который они имели до обновления. Это сделало для меня почти невозможным провести различие между обновлением данных и перерабатываемым товаром. Кроме того, кажется, что для данных никогда не устанавливается значение = null, так что, похоже, их тоже нет.

Есть идеи?

Ответы [ 2 ]

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

Я не уверен, что именно вы спрашиваете.

Переработка рендерера - это процесс изменения данных рендерера, часто при прокрутке класса, основанного на списке.Это делается из соображений производительности, поэтому отображаются только элементы, отображаемые на экране, а не элементы, отображаемые за пределами экрана.Переработка рендеринга используется для имитации прокрутки списка без его фактического выполнения.

При замене dataProvider обновляются все средства визуализации.Когда вы изменяете dataProvider, он может обновлять некоторые средства визуализации в зависимости от того, что это за изменение.Я просмотрел код dataGroup, поэтому я не уверен, что именно он делает для обновлений, но классы Halo listBased реализуют обработчик события collectionChange для обработки этих изменений.Я подозреваю, что DataGroup делает что-то подобное.

Зачем вам нужно знать причину изменения данных рендерера?Рендер должен заботиться только о том, чтобы он был изменен.

0 голосов
/ 20 октября 2010

Существует событие dataChange, которое всплывает, когда происходит смена поставщика {data}.

<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" 
                autoDrawBackground="true" width="142" height="22" dataChange="WHATEVERYOUWANT"
...