Wann ist der richtige Punkt (aus der Lebenszyklusansicht), um Datenanbieter für Listencontainer auf Flex 3 festzulegen?

StackOverflow https://stackoverflow.com/questions/2235312

Frage

Ich erstelle einen Listencontainer mit meinem eigenen Element -Renderer, um die XML -Datei anzuzeigen.

Jetzt überschreibe ich die public override function set data(value:Object):void Methode In meinem Artikel -Renderer ist das Problem, dass diese Funktion mehrmals aufgerufen wurde (!!) (mehr als die Länge des Datenanbieters).

Vielleicht stelle ich den Datenanbieter nicht richtig fest. Hier ist, wie ich es mache:

Erste deklariere bindbare Eigenschaft:

[Bindable]
private var _listDataProvider:XMLListCollection;

Dann erstellen Sie das Listenobjekt:

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

Laden Sie dann die XML (mit Urlloader) und im Ergebnis::

_listDataProvider = new XMLListCollection(xml..Person);

Der XMllistCollection-Aufbau OK (ich kann es in Debug sehen).

Was mache ich falsch?????

Danke Leute...

War es hilfreich?

Lösung

Es sieht für mich richtig aus, ich habe das Gefühl, dass die Flex 3 -Liste das Gefühl habe, dass die zugehörigen DataProvider -Komponenten die Daten einige Male für jeden Element -Renderer in der ersten Runde festlegen (Ineffizienzen im Rahmen). Beim ersten Mal könnten sie es auf NULL setzen (passiert das?) Und das nächste Mal, wenn sie es auf den Wert setzen.

Um dies zu umgehen, machen Sie einfach so etwas wie:

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

Das sollte den Trick machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top