0

スパークリストに画像を表示しようとしています。私はたくさんの方法を試しましたが、どれもうまくいかないようです。これが私のコードです:

 var list:List = new List();
list.width = 200;
list.height = 300;
list.labelField = "LabelName";

var array:ArrayCollection = new ArrayCollection;
array.addItem(new BitmapImage().source="/assets/appLogo.png");
array.addItem(new BitmapImage().source="/assets/companyLogo.png");

list.dataProvider = list;

リストは画面に表示されますが、画像はリストに表示されません。行の画像の代わりに、一方の行に「/assets/appLogo.png」、もう一方の行に「/assets/companyLogo.png」と表示されます。私はこれを解決するのに数時間を費やしましたが、運が悪かったです。助けてくれてありがとう。

4

2 に答える 2

2

これらの行は正しくありません。

array.addItem(new BitmapImage().source="/assets/appLogo.png");
array.addItem(new BitmapImage().source="/assets/companyLogo.png");

実行しているように見えるのは、新しい BitMapImage を作成し、そのソース プロパティを設定することです。配列に追加しているアイテムは、割り当ての結果ではありませんか? または、実際のソース値を取得しているように聞こえます。BitMapImages の配列が必要な場合は、次のように作成できます。

var tempImage :BitMapImage = new BitmapImage()
tempImage.source="/assets/appLogo.png"
array.addItem(tempImage);
tempImage = new BitmapImage()
tempImage.source="/assets/companyLogo.png"
array.addItem(tempImage);

ただし、表示方法を知っているカスタム itemRenderer を作成しない限り、リストは BitmapImage をどうするかわかりません。

<s:List dataProvider="array">
 <s:itemRenderer>
   <s:ItemRenderer dataChange="onDataChange()">
     <fx:Script>
       protected function onDataChange():void{
        this.removeChild(data); 
        this.addChild(data as BitMapImage);
       }
     </fx:Script>
   </s:ItemRenderer>
 </s:itemRenderer>
</s:List>

ただし、ソースを表す文字列の配列を用意してから、レンダラーで BitMapImage を作成する方がより有益であると思います。一度にすべてを使用しない場合は、多数の BitMapImage コンポーネントを作成する必要はありません。このような並べ替え:

array.addItem("/assets/appLogo.png");
array.addItem("/assets/companyLogo.png");

<s:List dataProvider="array">
 <s:itemRenderer>
   <s:ItemRenderer dataChange="onDataChange()">
     <fx:Script>
       protected function onDataChange():void{
        this.bitMapImage = data;
       }
     </fx:Script>
     <s:BitMapImage id="bitMapImage" />
   </s:ItemRenderer>
 </s:itemRenderer>
</s:List>
于 2013-02-18T23:48:21.113 に答える