Когда находится правильная точка (из представления жизненного цикла), чтобы установить продюсер данных для контейнера списка на Flex 3
-
19-09-2019 - |
Вопрос
Я делаю контейнер списка с моим собственным рендерингом элемента для отображения файла XML.
Теперь я переоцениваю public override function set data(value:Object):void
Метод в моем элементе рендерера, проблема заключается в том, что эта функция называлась много раз (!!) (более чем длины поставщика данных).
Может быть, я не устанавливаю поставщика данных правильно, вот как я это делаю:
Первое объявление связного имущества:
[Bindable]
private var _listDataProvider:XMLListCollection;
Затем создание объекта списка:
<mx:List id="list" dataProvider="{_listDataProvider}" itemRenderer="myItemRenderer" />
Затем загрузка XML (с помощью UrlloAder) и в результате получения:
_listDataProvider = new XMLListCollection(xml..Person);
Настройка XMllistCollection OK (я вижу его в отладке).
Что я делаю не так?????
Спасибо, парни...
Решение
Это выглядит правильно для меня, у меня есть ощущение, что список Flex 3 и связанные компоненты DataProvider будут устанавливать данные несколько раз для каждого визуализатора элемента в первый раунд (неэффективность в структуре). В первый раз они могут установить его на NULL (это происходит?), Затем в следующий раз, когда они могут установить его на значение.
Чтобы обойти это, просто сделайте что -то вроде:
public function set data(value:Object):void
{
if (super.data == value)
return;
super.data = value;
}
Это должно делать свое дело.