Flex 3のリストコンテナのデータプロビエを設定するための正しいポイント(ライフサイクルビューから)がいつですか

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

質問

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;
}

それはトリックをするはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top