あなたの問題は、データを表示できるアイテムレンダラーを定義していないことです。カスタムアイテムレンダラーの作成については、 http: //help.adobe.com/en_US/Flex/4.0/UsingSDK/WS03d33b8076db57b9-23c04461124bbeca597-8000.html を参照してください。
次: あなたの ArrayCollection では、新しいローダーを作成しませんでした。ArrayCollection アイテム 1 がアイテム 2 と同じローダーを指していることを意味します。
レンダラーを使用しないリストとカスタム レンダラーを使用するリストの 2 つのリストの例を追加しました。ローダーは使用しませんでしたが、もちろん、Flex イメージ コンポーネントを使用する代わりに、ディスプレイにローダーを追加するレンダラーを作成することもできます。
主な用途:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var _dataProviderList : ArrayCollection = new ArrayCollection(
[
"http://www.joomlaworks.net/images/demos/galleries/abstract/7.jpg",
"http://www.joomlaworks.net/images/demos/galleries/abstract/8.jpg"
]
);
]]>
</fx:Script>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:List dataProvider="{_dataProviderList}">
</s:List>
<s:List itemRenderer="ImageItemRenderer" dataProvider="{_dataProviderList}">
</s:List>
</s:WindowedApplication>
レンダラー
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<mx:Image
source="{data}"
width="50" height="50"/>
</s:ItemRenderer>
ArrayCollection のオブジェクトとしてローダーを本当に使用したい場合は、レンダラーを次のように記述できます。
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<fx:Script>
<![CDATA[
[Bindable]
private var _loader : Loader;
private function dataLoaded (evt : Event) : void
{
_loader = (data as Loader)
}
override public function set data(value:Object):void
{
super.data = value;
if (data is Loader) {
// render items may be reuses (http://stackoverflow.com/questions/7328989/itemrenderer-switching-urlloader-images)
(data as Loader).contentLoaderInfo.removeEventListener(Event.COMPLETE, dataLoaded);
// data allready loaded
if ((data as Loader).content) {
_loader = (data as Loader)
}
else {
// wait till data is loaded
(data as Loader).contentLoaderInfo.addEventListener(Event.COMPLETE,dataLoaded);
}
}
}
]]>
</fx:Script>
<mx:Image
source="{_loader}"
width="50" height="50"/>
</s:ItemRenderer>