0

私のセットアップはかなり基本的です。カスタムitemRendererとdataproviderを含むs:Listがあります。生成されたアイテムレンダラーのインスタンスにアクセスしたいのですが、方法がわかりません。

リストのコードは次のとおりです。

<s:List id="layersList" 
            borderVisible="false"  
            allowMultipleSelection="true" 
            contentBackgroundAlpha="0" 
            itemRenderer="renderers.LayerRenderer" 
            dataProvider="{AssetsCollection}">
     <s:layout>
    <s:VerticalLayout gap="1"  />           
     </s:layout>
<s:list>

私が欲しいのは、次のように生成されたレンダラーにアクセスすることです。

layersList.renderers[selectedIndex] or layersList.selectedItems[0].renderer。その内部オブジェクトのいくつかにアクセスするため。イベントのように、リストの親からレンダラーインスタンスにディスパッチされたイベントをリッスンしたいと思います。

誰か助けてもらえますか?

4

1 に答える 1

1

Lists / ItemRenderersの概念モデルは、それらがdataProvider内のアイテムの表現であるということです。これを念頭に置く理由の1つは、リストがメモリフットプリントを削減するためにItemRendererをリサイクルすることです。これは、dataProviderに100個のアイテムがある可能性があることを意味しますが、それらの一部にのみItemRendererが関連付けられ、それらの一部は画面に表示されないか、有効でなくなる可能性があります。リスト内のItemRendererに、レンダラーを直接操作せずにリストの親の状態を反映させる方法はいくつかあります。たとえば、次のようなことができます。

<s:List id="layersList" 
        borderVisible="false" 
        allowMultipleSelection="true" 
        dataProvider="{AssetsCollection}"
        contentBackgroundAlpha="0">
    <s:layout>
        <s:VerticalLayout gap="1" />      
    </s:layout>
    <s:itemRenderer>
        <fx:Component>
            <myrenderers:TestRenderer myState="{outerDocument.someState}"/>
        </fx:Component>
    </s:itemRenderer>
</s:List>

TestRendererにmyStateと呼ばれるバインド可能なパブリックプロパティがある場合。また、リストの親には「someState」と呼ばれるバインド可能なプロパティがあります。次に、レンダラー内で、myStateの値に基づいて条件付きロジックを設定できます。お役に立てば幸いです。

于 2010-07-21T18:13:34.020 に答える