У меня есть этот Flex 4.5 (Burrito) Мобильный проект:Flex Hero: Загрузка данных XML работает, но список не обновляется
Он состоит из 2-х файлов - TextXML.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:MobileApplication
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:components="spark.components.*"
firstView="views.Home">
</s:MobileApplication>
и Home.mxml с 1 кнопкой, 1 Список и 1 HTTPService:
<?xml version="1.0" encoding="utf-8"?>
<s:View
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:components="spark.components.*"
title="Home">
<fx:Script>
<![CDATA[
import mx.collections.*;
import mx.events.*;
import mx.rpc.events.*;
import mx.utils.*;
import spark.events.*;
[Bindable]
public var myColl:XMLListCollection = new XMLListCollection();
public function srvResult(event:ResultEvent):void {
trace(ObjectUtil.toString(event.result));
myColl.source = event.result.pref.user.money;
myList.dataProvider = myColl;
}
public static function myLabelFunc(item:Object):String {
return item.yw;
}
public static function myMessageFunc(item:Object):String {
return item.max;
}
]]>
</fx:Script>
<fx:Declarations>
<s:HTTPService
id="httpSrv"
url="http://preferans.de/user-xml.php?id=OK123195454365"
resultFormat="e4x"
result="srvResult(event)"
fault="trace(event.fault.message)" />
</fx:Declarations>
<s:navigationContent>
<s:Button label="Load XML" click="httpSrv.send()"/>
</s:navigationContent>
<s:List id="myList"
top="0" bottom="0" left="0" right="0"
dataProvider="{myColl}">
<s:itemRenderer>
<fx:Component>
<s:MobileIconItemRenderer
labelFunction="Home.myLabelFunc"
messageFunction="Home.myMessageFunc" >
</s:MobileIconItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:List>
</s:View>
Когда я бегу мое приложение в отладчик (так что я могу видеть вывод трассировки в консоли) и нажмите на кнопку «Load XML», то я вижу, что данные XML загружается нормально из my PHP script:
<pref>
<user id="OK123195454365" first_name="Dmitry"
city="Moscow" money="8815" medals="1">
<money yw="2011-01" max="8815" user="8815"/>
<money yw="2010-52" max="6380" user="1545"/>
<money yw="2010-51" max="8797" user="2094"/>
<money yw="2010-50" max="8446" user="2080"/>
</user>
</pref>
Но список, к сожалению, остается пустым.
У меня такое ощущение, что здесь отсутствует незначительная вещь, возможно, событие должно быть отправлено в Список? Я попытался переназначить свой dataProvider, как вы можете видеть выше, но это мне не помогает ...
Спасибо! Alex
Спасибо за отличный ответ! Я не понимаю, как работает 1 вещь: myList имеет dataProvider = «{myColl}», и в то же время myColl получает новый выделенный объект, всякий раз, когда XML загружается с сервера: myColl = new XMLListCollection (новый XMLList (xml) .user.money)); Он все еще работает, и это правильный путь? –
Из того, что я помню, каркас обрабатывает это для вас. Я не могу вспомнить, где я это читал, но если вы используете компилятор аргументов keep-generated-actionscript, вы сможете отслеживать, что происходит со всеми связями –