Android 单击时对json响应进行排序,并相应地显示在文本中

Android 单击时对json响应进行排序,并相应地显示在文本中,android,titanium,titanium-mobile,appcelerator-mobile,Android,Titanium,Titanium Mobile,Appcelerator Mobile,嗨,我有json响应,看起来像这样 { "id": "7", "issue_title": "Apr - May 2015", "issue_no": "Issue 1.4", "cover_image_url": "http://www.link.org/apr--may-2015-7.jpg", "synopsis_pdf_url": "", "advertisers_pdf_url": "", "issue_date": "01-04-2015", "issue_year": "2015"

嗨,我有json响应,看起来像这样

{
"id": "7",
"issue_title": "Apr - May 2015",
"issue_no": "Issue 1.4",
"cover_image_url": "http://www.link.org/apr--may-2015-7.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-04-2015",
"issue_year": "2015" 
},
{
"id": "3",
"issue_title": "Feb-Mar 2015",
"issue_no": "Issue 1.3",
"cover_image_url": "http://www.link.org/febmar-2015-3.jpg",
"synopsis_pdf_url": "http://www.link.org/febmar-2015-3.pdf",
"advertisers_pdf_url": "http://www.link.org/febmar-2015-3.pdf",
"issue_date": "01-02-2015",
"issue_year": "2015"
},
{
"id": "2",
"issue_title": "Dec 2014 - Jan 2015",
"issue_no": "Issue 1.2",
"cover_image_url": "http://www.link.org/dec-2014--jan-2015-2.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-12-2014",
"issue_year": "2014"
},
{
"id": "1",
"issue_title": "Oct - Nov 2014",
"issue_no": "Issue 1.1",
"cover_image_url": "http://www.link.org/oct--nov-2014-1.jpg",
"synopsis_pdf_url": "",
"advertisers_pdf_url": "",
"issue_date": "01-10-2014",
"issue_year": "2014"
}
然后,我检索了每个元素的“问题年”,并在选择器中显示,删除了多个事件

基本上,当窗口加载时,所有元素都会显示出来,但之后点击选择器元素(即2014、2015),元素应该会显示出来

Tableview用于显示元素,因此每次单击传递给Tableview的数组时,都应根据从选择器中选择的年份进行更改

var i,
len = singleData.length,
sorted = [],
obj = {};

for ( i = 0; i < len; i++) {
obj[singleData[i]] = 0;
}
for (i in obj) {
sorted.push(i);
}

for (var i = 0; i < sorted.length; i++) {
    data[i] = Ti.UI.createPickerRow({
    title : sorted[i]
}); 
}

$.picker.add(data);

$.picker.addEventListener('change',function(e){
//what will be the code here
});
vari,
len=singleData.length,
排序=[],
obj={};
对于(i=0;i

有人能帮忙吗?

这相当简单。以下是您需要做的:

将自定义属性添加到选择器,其中包含要发送的obj:

for (var i = 0; i < sorted.length; i++) {
    data[i] = Ti.UI.createPickerRow({
    title : sorted[i],
    obj: MY_OBJ // HERE YOU NEED TO PASS THE OBJECT THAT WILL BE SENT TO DISPLAY
}); 
}
希望有帮助!
-Lucas

您需要如何将数据传递到table view或对json进行排序的帮助吗?如果选择2014年为
issue_year
,则只有年份为2014年的记录才能传递到tableview
for(var i=0;i如果我们考虑上面的代码,即ARGs数组是上面提到的整个JSON响应,如果我把它提交给OBJ,那么显然它将没有帮助。基本上,我想如果我们选择2014年,那么2014年作为发行年的元素应该作为一个单元出现,这样我就可以将aaray传递给tableview。自定义属性将不满足要求,我猜:-)实际上它会满足。例如,创建一个单独的函数,将一年映射到一个数组中,并将该数组作为自定义对象传递。比如:for(var i=0;i$.picker.addEventListener('change',function(e){
  alert(e.source.obj); // This will alert the correct object you created in the picker!
});