0

itemrenderer として 3 つの状態を持つモジュールを作成しました。状態は、Movies、Songs、および TvShows と呼ばれます。基本状態は空です。itemRenderer は、Hbox、Vboxes、およびラベルで構成されます。

そして、List コンポーネントを作成しました。

私がやりたいことは、List コンポーネントにデータを入力し、ItemRenderer を使用して表示できるようにすることです。データベースから引き出されたデータに応じて、itemRenderer の正しい状態を表示したいと考えています。そこで、データベースから取り出したレコードが曲ならSongの状態、映画ならMovieの状態などを表示したい。

そこで、引き出されたデータによって、itemrendererの現状を変えたいと考えています。どうすればいいですか?このコードを作成する方法の例を誰かに見せてもらえますか?

ありがとう

4

3 に答える 3

1

うまくいったおかげで。私が気付いた唯一のことはそれでした:

this.currentState = MOVIE_STATE;

する必要があります

this.currentState = "MOVIE_STATE";

ありがとう

DJ

于 2009-10-17T11:20:22.280 に答える
1

CustomItemRendererのメソッドをオーバーライドset dataし、データに基づいて適切な状態を割り当てます。

override public function set data(value:Object):void
{
  super.data = value;
  if(data.type == "song")
    this.currentState = SONG_STATE;
  else if(data.type == "movie")
    this.currentState = MOVIE_STATE;
  else if //and so on...
}
于 2009-10-16T06:05:53.203 に答える
0

上記のオプションでは、データ配列コレクションをループしてタイプを別の状態名に設定することにより、すべてのデータを調整する必要があります。

おそらく、より良い解決策は、リストのすべての項目をループして状態を変更することです。

private function changeItemrendererState():void
    {
        var item:mycustomitemrenderer;

        for(var i:uint = 0; i < itemlist.numElements; i++)
        {
            item = itemlist.getElementAt(i) as mycustomitemrenderer;

            item.currentState = "mynewstate";
        }
    }
<s:Scroller focusEnabled="false" hasFocusableChildren="true">   
        <s:DataGroup dataProvider="{mydata}"  itemRenderer="skins.mycustomitemrenderer"  width="100%" height="100%" id="itemlist">
            <s:layout>
                <s:TileLayout horizontalGap="2" verticalGap="2" columnAlign="justifyUsingWidth"/>
            </s:layout>
        </s:DataGroup>
</s:Scroller>

useVirtualLayout="true" を使用すると、これは機能せず、表示されているアイテムにのみ影響します。

于 2012-09-05T15:11:25.017 に答える