Zugriff auf ArrayCollection-Elemente? [Flash 10]
| Beiträge: 42 Wohnort: Hamburg Registriert: Sep 2006
| 28.04.2010, 14:36
Ich versuche (bisher erfolglos), auf bestimmte Elemente innerhalb einer ArrayCollection zuzugreifen, die per HTTPService-Call mit einer XML-Datei gefüllt wurde. Das an sich ist problematisch, allerdings versuche ich auch vergeblich, eine eigene Komponente, die u.a. eine Spark List-Komponente enthält, mit Teilen der ArrayCollection zu füllen.
Mein Ziel ist es eigentlich, je eine Instanz meiner Komponente (die ein Label und eine List enthält) pro Kategorie in meiner XML-Datei zu erzeugen und alle Links einer Kategorie als Liste innerhalb meiner Komponente darzustellen. Pro category-Knoten eine Instanz meiner Komponente zu erhalten, klappt. Was nicht hinhaut, ist eben das Zuweisen der jeweiligen links-Knoten zur jeweiligen List innerhalb meiner Komponente.
Noch dazu: Mein FlashBuilder4-Wissen beschränkt sich so ziemlich auf das, was durch die "Flex in a week"-Tutorials abgedeckt wird. Ich bin also ein Neuling auf diesem Gebiet.
Vielleicht hat jemand einen Tipp, wieso die gefetteten Zeilen unten Probleme bereiten und wie ich die Probleme umgehen kann?
Meine XML-Datei (Auszug) ist so aufgebaut:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <categories>
<category>
<name>Suchmaschinen</name>
<links>
<link>
<url></url>
<name>Yahoo</name>
</link>
<link>
<url></url>
<name>Google</name>
</link>
</links>
</category>
<category>
<name>Lesestoff</name>
<links>
<link>
<url></url>
<name>Heise</name>
</link>
<link>
<url></url>
<name>Stern</name>
</link>
<link>
<url></url>
<name>Spiegel</name>
</link>
</links>
</category>
</categories>
|
Meine Application sieht so aus:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="loadData.send();" xmlns:flinkcrmcategoriesservice="services.flinkcrmcategoriesservice.*">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
public var i:uint;
public var categories:ArrayCollection = new ArrayCollection;
protected function loadData_resultHandler(event:ResultEvent):void
{
categories = event.result.categories.category;
trace(categories[0].links[0]["name"]); // ##### geht nicht #####
init();
}
protected function loadData_faultHandler(event:FaultEvent):void
{
Alert.show(event.fault.faultString, "Fault Information");
}
public function init():void {
for (i=0;i<categories.length;i++) {
var c:FlinkCRMCategory = new FlinkCRMCategory;
c.x = i*200;
c.catlabel = String(categories[i]["name"]);
//c.linksdp = categories[i]["links"]; // ##### geht nicht #####
// onClick -> open url in a browser window
c.addEventListener(MouseEvent.CLICK, clickHandler);
con.addChild(c);
}
}
]]>
</fx:Script>
<fx:Declarations>
<s:HTTPService id="loadData"
url="flinkData.xml"
result="loadData_resultHandler(event)"
fault="loadData_faultHandler(event)"/>
</fx:Declarations>
<mx:Tile id="con"
paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10"
width="80%" height="100%"
tileHeight="220"
backgroundColor="#eeeeee"
direction="horizontal"/>
</s:Application>
|
Meine Komponente:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="200" height="230"
contentBackgroundColor="#DDDDDD">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var catlabel:String;
[Bindable]
public var linksdp:ArrayCollection;
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Label id="catLabel"
x="0" y="0"
text="{catlabel}"
width="200" height="20"
textAlign="center" verticalAlign="middle"
backgroundColor="#999999" color="#FFFFFF"
fontWeight="bold"/>
<s:List id="catLinks"
x="0" y="20"
width="200" height="200"
borderVisible="true"
fontSize="10" fontFamily="Verdana"
contentBackgroundColor="#FFFFFF" borderColor="#DDDDDD"
dataProvider="{linksdp}"/>
</s:Group>
|
| Geändert von Christian Scholz am 28.04.10 um 14:40 Uhr | |
| | Beiträge: 4909 Wohnort: zuhaus Registriert: Apr 2004
| 28.04.2010, 15:03
|
|