已解析的列表项未在 appcelerator 中正确显示
Parsed list items not correctly shown in appcelerator
我试图在 appcelerator 中解析来自 URL 的 JSON 数据。我解析了所有数据并尝试在列表视图中显示出来。但它只显示解析数据中的最后一项。(如果有 10 个值可用,它只显示第 10 个值)。这是我的代码和 XML 数据。
var contactList = [];
var contactsArray,cId,cName,cEmail,cAddr,cGender;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
var jsonParse = JSON.parse(this.responseText);
for (var i = 0; i < jsonParse.contacts.length; i++) {
contactsArray = jsonParse.contacts[i];
cId = contactsArray.id;
cName = contactsArray.name;
cEmail = contactsArray.email;
cAddr = contactsArray.address;
cGender = contactsArray.gender;
var elementData;
contactList = [];
contactData = {
"name_label" : {
text : cName,
},
"email_label" : {
text : cEmail,
},
"addr_label" : {
text : cAddr,
},
"gender_label" : {
text : cGender,
},
"template" : "list_template_wh",
"properties" : {
itemId : cId,
backgroundColor : "transparent"
}
};
contactList.push(contactData);
};
$.contactListView.sections[0].setItems(contactList);
},
onerror : function() {
Ti.API.debug(e.error);
},
timeout : 5000
});
xhr.open("GET", Alloy.Globals.AppURL);
xhr.send();
This is my xml code
<Alloy>
<Window id="win_main" title="Window Main">
<ListView id="contactListView" >
<Templates>
<ItemTemplate name="list_template_wh" id="list_temp_wh">
<View id="list_item_container">
<Label bindId="name_label" id="contact_name"/>
<Label bindId="email_label" id="contact_email"/>
<Label bindId="addr_label" id="contact_addr"/>
<Label bindId="gender_label" id="contact_gen"/>
</View>
</ItemTemplate>
</Templates>
<ListSection/>
</ListView>
</Window>
</Alloy>
任何帮助将不胜感激。谢谢
那是因为您在 for 循环中重新定义了 contactList
数组。
在循环中删除 var elementData;
之后的 contactList = [];
juste。
我试图在 appcelerator 中解析来自 URL 的 JSON 数据。我解析了所有数据并尝试在列表视图中显示出来。但它只显示解析数据中的最后一项。(如果有 10 个值可用,它只显示第 10 个值)。这是我的代码和 XML 数据。
var contactList = [];
var contactsArray,cId,cName,cEmail,cAddr,cGender;
var xhr = Ti.Network.createHTTPClient({
onload : function() {
var jsonParse = JSON.parse(this.responseText);
for (var i = 0; i < jsonParse.contacts.length; i++) {
contactsArray = jsonParse.contacts[i];
cId = contactsArray.id;
cName = contactsArray.name;
cEmail = contactsArray.email;
cAddr = contactsArray.address;
cGender = contactsArray.gender;
var elementData;
contactList = [];
contactData = {
"name_label" : {
text : cName,
},
"email_label" : {
text : cEmail,
},
"addr_label" : {
text : cAddr,
},
"gender_label" : {
text : cGender,
},
"template" : "list_template_wh",
"properties" : {
itemId : cId,
backgroundColor : "transparent"
}
};
contactList.push(contactData);
};
$.contactListView.sections[0].setItems(contactList);
},
onerror : function() {
Ti.API.debug(e.error);
},
timeout : 5000
});
xhr.open("GET", Alloy.Globals.AppURL);
xhr.send();
This is my xml code
<Alloy>
<Window id="win_main" title="Window Main">
<ListView id="contactListView" >
<Templates>
<ItemTemplate name="list_template_wh" id="list_temp_wh">
<View id="list_item_container">
<Label bindId="name_label" id="contact_name"/>
<Label bindId="email_label" id="contact_email"/>
<Label bindId="addr_label" id="contact_addr"/>
<Label bindId="gender_label" id="contact_gen"/>
</View>
</ItemTemplate>
</Templates>
<ListSection/>
</ListView>
</Window>
</Alloy>
任何帮助将不胜感激。谢谢
那是因为您在 for 循环中重新定义了 contactList
数组。
在循环中删除 var elementData;
之后的 contactList = [];
juste。