我正在尝试创建json数据的详细视图。我不确定如何真正接近它。我有eventlistener,但我不确定如何根据所选栏的名称提取数据。这是我的json拉:
var win =Titanium.UI.currentWindow;
var data = [];
var xhr = Titanium.Network.createHTTPClient();
var barList = Titanium.UI.createTableView({
height:366,
width: 320,
top:0,
left:0
});
win.add(barList);
xhr.onload = function () {
var json = JSON.parse(this.responseText);
Ti.API.info(json.length);
for (var i = 0; i < json.length; i++) {
var row = Titanium.UI.createTableViewRow({
hasChild: true,
className: 'bar-row',
filter: json[i].bar.name
});
var titleLabel = Titanium.UI.createLabel({
text: json[i].bar.name,
font: {
fontSize: 14,
fontWeight: 'bold'
},
left: 70,
top: 5,
height: 20,
width: 210
});
row.add(titleLabel);
var addressLabel = Titanium.UI.createLabel({
text: json[i].bar.address,
font: {
fontSize: 10,
fontWeight: 'normal'
},
left: 70,
top: 25,
height: 40,
width: 200
});
row.add(addressLabel);
var iconImage = Titanium.UI.createImageView({
text: json[i].bar.logo_file_name,
width: 50,
height: 50,
left: 10,
top: 10
});
row.add(iconImage);
data.push(row);
row.addEventListener('click',function(e){
var detail = Ti.UI.createWindow({
title: e.rowData.title
});
detail.open({modal: true});
})
}
barList.data = data;
};
xhr.open('GET', 'http://site.com/db.json');
xhr.send();
JSON数据: 我正在寻找所选栏的名称,描述,mon_special,tues_special等
答案 0 :(得分:1)
最简单的方法是将数据附加到您创建的行:
var row = Titanium.UI.createTableViewRow({
hasChild: true,
className: 'bar-row',
filter: json[i].bar.name,
barData : json[i].bar
});
然后通过添加到TableView本身的事件监听器访问它(如果你自己创建了行,不要使用事件的rowData对象)
barList.addEventListener('click', function(e) {
// Get the row clicked, then get our custom attribute
var passedJSONBarData = e.row.barData;
// Now pass along through the window, or build the window here
var detail = Ti.UI.createWindow({
title: passedJSONBarData.title,
barData : passedJSONBarData
});
detail.open({modal: true});
});
我将事件监听器添加到表中,这样我们只有在使用这种方法可以节省一些性能/内存时才创建函数。