我的列表组件由于某种原因没有显示从xml文件中提取的数据 这是代码,即使当我对“question1”数组进行跟踪时,我得到了值。 任何人都可以告诉我这里我做错了什么吗?
import fl.controls.List;
import fl.data.DataProvider;
var myXML:XML;
var list:List = new List ;// new list item
var question1:Array = new Array();
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("quiz1.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
list.setSize(200,200);
var xpos = (stage.stageWidth / 2) - (list.width / 2);
var ypos = (stage.stageHeight / 2) - (list.height / 2);
list.move(xpos,ypos);
for (var i:int=0; i<myXML.*.length(); i++)
{
question1.push(myXML.questions[i].@idno);
trace(question1);
}
list.dataProvider=new DataProvider(question1);
addChildAt(list,0);
}
答案 0 :(得分:1)
访问xml属性时,返回值的类型为XMLList,fl.data.DataProvider在构建其内部数组时不会处理。试一试:
question1.push(myXML.questions[i].@idno.toString());
另一种选择是让DataProvider直接从xml构建数据,但你可能需要labelField或labelFunction,尝试这样的事情:
list.dataProvider=new DataProvider(myXML);
list.labelField = "idno";
此外,您可能希望在项目单击处理程序中访问问题节点,在这种情况下,您可以像这样构建源数组:
question1.push({
label:myXML.questions[i].@idno.toString(),
data:myXML.questions[i]
});