ItemRenderer против повторителя в Flex - PullRequest
1 голос
/ 19 декабря 2011

Любой из вас знает о разнице между ItemRenderer и Repeater.Оба ведут себя почти одинаково.Есть ли разница?

Ответы [ 2 ]

4 голосов
/ 19 декабря 2011

Любой из вас знает о разнице между ItemRenderer и Repeater. Оба ведут себя почти одинаково. Есть ли разница?

Я не уверен, как они могут вести себя одинаково, но не видя ваш код, трудно судить. Я постараюсь объяснить разницу; или скорее; что каждый из них

Под капотом ItemRenderer - это ClassFactory . Фабрика - это шаблон проектирования для класса, который создает другие классы. В контексте Flex itemRenderers используются в классах на основе списка, таких как DataGrid или List. Классы на основе списка принимают dataProvider и отображают только элементы, видимые на экране. При прокрутке списка каждый компонент, созданный itemRenderer, используется повторно. Я называю это переработкой рендерера. Поэтому важно, чтобы вы реализовали свой itemRenderer для ответа на событие dataChange, чтобы он всегда правильно отображал данные, которые он должен представлять. Больше информации о itemRenderer компонентов .

Повторитель похож на цикл в MXML. Использование повторителя не дает никаких преимуществ «рендеринга», которые дает класс на основе списка. Все, что создано в вашем цикле, отрисовывается сразу.

Итак, допустим, у вас есть провайдер данных с 100 изображениями. У вас есть место, чтобы показать 10 из них на экране. При использовании класса, основанного на списке, flex будет отображать и загружать 10 изображений; изменение того, что загружается при прокрутке списка. С помощью Repeater Flex будет рендерить и загружать все 100 одновременно, хотя не все из них находятся на экране.

2 голосов
/ 19 декабря 2011

Самая большая разница: повторитель устарел снят с производства. Он существует как компонент mx только во Flex 3 , и в Flex 4 нет эквивалента Spark. Рекомендуется использовать вместо него DataGroup + ItemRenderer. Основная причина этого очень четко объяснена в ответе @ www.Flextras.com.

Кроме того, IMO для всего, кроме самого основного использования Repeater, может быть серьезной болью. Его парадигма полностью отличается от всех других компонентов Flex , в то время как подход DataGroup + ItemRenderer во многом соответствует набору компонентов Flex.

Итог: не использовать Repeater . С Repeater вы ничего не можете поделать, как с DataGroup + ItemRenderer. (Если, возможно, вы не застряли с Flex 3 по какой-то причине. Подробнее об этом см. В комментариях Эми.)

...