TreeにXMLをセットする
XMLを吐き出す準備が出来た所で、今までスタティックなXMLをロードしていた部分をやめて、リモートから動的にXMLを取得する様に変更を加えます。
まずはRemoteObjectの定義です。以下を追加します。
<mx:method name="getSummaryListXML" result="getSummaryListXML_result(event)" fault="handleFault(event)"/>
resultに対応するメソッドを実装します。
import mx.utils.XMLUtil; function getSummaryListXML_result(event) : Void { summaryList = XMLUtil.createXML(event.result).firstChild; }
XMLUtilとはmx.utilsに用意されているクラスで、引数にXMLのStringを与えてやる事によってXMLオブジェクトに変換してくれるユーティリティーです。
ポイントは、XMLのfirstChildという所です。(これも気が付くまでしばらくかかりました)
そして、
はもういらなくなったので、削除します。
ただし、削除した代わりに
var summaryList;
を加えておきましょう。
最後に、このTreeはアプリケーションが起動した時に自動的に表示したいと思うので、initApp()メソッドをつくり、<mx:Application>のinitialize属性に定義します。
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" xmlns="*" pageTitle="MessageBoard with Flex" initialize="initApp()">function initApp():Void { remote.getSummaryListXML(); }
さらに、投稿した後に最新のリストを表示するために、下記の様に一行追加します。
function insertNewMessage(tempMessage:Message) : Void { remote.insertNewMessage(tempMessage); remote.getSummaryListXML(); }
これでTreeの実装が終了しました。
以上をまとめたソースです。