0

xml ファイルを表示するために、独自のアイテム レンダラーを使用して LIST コンテナーを作成しています。

今、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 の構築は問題ありません (デバッグで確認できます)。

私は何を間違っていますか?????

みんなありがとう...

4

1 に答える 1

1

Flex 3 List と関連する dataProvider コンポーネントが、最初のラウンドでアイテム レンダラーごとに数回データを設定する気がします (フレームワークの非効率性)。最初に、彼らはそれを null に設定するかもしれません (それは起こっていますか?)、次に彼らはそれを値に設定するかもしれません.

これを回避するには、次のようにします。

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

これでうまくいくはずです。

于 2010-02-10T09:52:14.883 に答える