Когда это правильная точка (с точки зрения жизненного цикла) для установки провайдера данных для контейнера LIST во Flex 3 - PullRequest
0 голосов
/ 10 февраля 2010

Я создаю контейнер LIST со своим собственным средством визуализации элементов для отображения XML-файла.

Теперь я переопределяю метод public override function set data(value:Object):void в моем средстве визуализации элементов, проблема в том, что эту функцию вызывали много раз (!!) (больше, чем длина поставщика данных).

Может быть, я неправильно настраиваю поставщика данных, вот как я это делаю:

Сначала объявите привязываемое свойство:

[Bindable]
private var _listDataProvider:XMLListCollection;

Затем создаем объект LIST:

<mx:List id="list" dataProvider="{_listDataProvider}" itemRenderer="myItemRenderer" />

Затем загружаем xml (с помощью urlLoader) и в результате делаем:

_listDataProvider = new XMLListCollection(xml..Person);

Сборка XMLListCollection в порядке (я вижу это в отладке).

Что я делаю не так ?????

Спасибо, ребята ...

1 Ответ

1 голос
/ 10 февраля 2010

Мне кажется, мне кажется, что Flex 3 List и связанные компоненты dataProvider будут устанавливать данные несколько раз для каждого средства визуализации элементов в первом раунде (неэффективность в структуре). В первый раз они могут установить его на нуль (это происходит?), А затем в следующий раз они могут установить его на значение.

Чтобы обойти это, просто сделайте что-то вроде:

public function set data(value:Object):void
{
    if (super.data == value) 
        return;
    super.data = value;
}

Это должно сработать.

...