XMLとArrayCollection

急に設定画面のタブリスト(mx:List)の内容が表示されなくなったのでかなり悩んでいた。
このタブリスト(TabList)のdataProviderは、設定XMLから読んだ属性値からなるArrayCollectionをdataProviderとするTabBarから、そのArrayCollection.sourceをconcatして得られたものだが、TabBarのほうは正常に表示できていたし、concatして得られたものをtraceしてもデータが入っていたので不可思議でならなかった。
そこで、ArrayCollection内の1つのデータをObjectと考えてfor文でまわしたら、連想配列になっていた。つまりtoString()では中身が取れるけど、ListのdataProviderとしては不適切な形になっていたのである。
おおもとをたどると

var ar : Array = [];
for each(var tab : XML in CommonData.configxml.main.tabbar.tab) {
	ar.push(tab.@name);
}
tabbar.titles = new ArrayCollection(ar);

ここがいけなかった。@nameではまだXMLListだったはずで、それがそのままObjectとして格納されてしまったらしい。
正解はこれ。

var ar : Array = [];
for each(var tab : XML in CommonData.configxml.main.tabbar.tab) {
	ar.push(tab.@name.toString());
}
tabbar.titles = new ArrayCollection(ar);

これでもいいね。

for each(var name : XML in CommonData.configxml.main.tabbar.tab.@name) {
	ar.push(name.toString());
}