0

<s:List>itemrenderer を使用する Flex 4.6 プロジェクトに があります。私のアプリケーションは時折、より多くのアイテムを this<s:List>にプッシュし、itemrenderer は期待どおりにこの変更を取得して適用します。私のリストは次のようになります。

<s:List borderVisible="false" contentBackgroundAlpha="0" 
        dataProvider="{this.data.root.item}" id="reviews"
        itemRenderer="renderers.pages.ReviewRenderer" minHeight="1"
        top="10" width="100%">
  <s:layout>
    <s:VerticalLayout gap="35" requestedMinRowCount="1" useVirtualLayout="false/>
  </s:layout>
</s:List>

...そして、次のようにデータプロバイダーオブジェクトにさらにデータを追加します。

this.data.root.item.addItem(this.form.reviewData);

addItem()メソッドが表示するオブジェクトにさらにデータをプッシュするたびにリッスンできるイベントがあるかどうかを知りたいです<s:List>

このイベントを使用できることはわかっていFlexEvent.VALUE_COMMITますが、ドキュメントによると、データが最初にリストに適用され、項目ユーザーがリストと対話するたびに、そのプロパティの 1 つが更新されます (リスト項目の 1 つを選択するなど)。 .

addItem()明確にするために、データ プロバイダーにデータを追加するたびにのみディスパッチされるイベントを探しています。

注:<s:List>モバイル向けに最適化されたバージョンではなく、Web プロジェクト用のコンポーネントを使用しています。

お時間をいただきありがとうございます。

4

1 に答える 1

2

リストへのdataProvider(this.data.root.itemあなたの例では) がArrayCollection、、、XMLListCollectionまたはコレクションが変更されるたびListCollectionViewにディスパッチされる場合。CollectionEvent.COLLECTION_CHANGE

CollectionEventには、kindさまざまな種類の変更があるため、調べる必要のあるプロパティがあります ( CollectionEventKindクラスを参照してください)。特に、 に興味があるかもしれませんCollectionEventKind.ADD

もう 1 つのaddItem()方法は、dataProvider のメソッドをオーバーライドして、独自の「itemAdded」イベントをディスパッチすることです。

override public function addItem(item:Object):void
{
    super.addItem(item);
    dispatchEvent(new Event("itemAdded"));
}
于 2012-08-14T16:43:23.920 に答える