Hi guys.
Yes there is a question like this one, but there is no activity and no answer.
I want to load data from a external XML file, using a HTTPService, and on the ResultEvent of the same HTTPService i want him to populate a ArrayCollection with the data from the XML.
I think a ArrayCollection is the ideal for this XML. but I'm open to suggestions.
XML
<?xml version="1.0" encoding="utf-8"?>
<PhotoGalleryData>
<Photo>
<id>1</id>
<name>Summer Vacation</name>
<description>In vacation</description>
<source>vacation.JPG</source>
</Photo>
<Photo>
<id>2</id>
<name>Winter Vacation</name>
<description>coold</description>
<source>vacation2.JPG</source>
</Photo>
</PhotoGalleryData>
I thought that this simple line in getDataResultHandler()
, would be enough to populate the ArrayCollection.
<mx:HTTPService id="getData"
url="{XMLDataFileLocation}"
fault="getDataFaultHandler()"
result="getDataResultHandler()"/>
[Bindable]
private var PhotoData:ArrayCollection;
private function getDataResultHandler():void
{
PhotoData = new ArrayCollection(getData.lastResult.PhotoGalleryData.photo)
}
But i guess it isn't, because just to be sure i have placed a List binded to the ArrayCollection to actually see if it really was populated.
<mx:List dataProvider="{PhotoData}" labelField="name"/>
And the list didn't showed any data, so isn't working as supposed to be.
Thanks for any help.
EDIT
NOTE
The
<mx:List/>
used is just to be sure that the ArrayCollection is indeed populated, it won't be used in the App.
Results taking Bozho advice.
With Bozho changes Flex doesn't report the var type error any more, but once i run it. Adobe flash does report this.
TypeError: Error #1034: Type Coercion failed: cannot convert mx.utils::ObjectProxy@22cd311 to mx.collections.ArrayCollection. at PhotoGallery/getDataResultHandler()[C:\Users\Fábio Antunes\Documents\Flex Builder 3\Photo Gallery\src\ActionScripts\PhotoGallery.as:56] at PhotoGallery/__getData_result()[C:\Users\Fábio Antunes\Documents\Flex Builder 3\Photo Gallery\src\PhotoGallery.mxml:23] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.rpc.http.mxml::HTTPService/http://www.adobe.com/2006/flex/mx/internal%3A%3AdispatchRpcEvent%28%29%5BC:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290] at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal%3A%3AresultHandler%28%29%5BC:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193] at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43] at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74] at DirectHTTPMessageResponder/completeHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:403] at flash.events::EventDispatcher/dispatchEventFunction()
Well and the line 23 that Flash reports the error its:
PhotoData = ArrayCollection(event.result);
Line 23 is:
result="getDataResultHandler(event)"