ListView不显示所有ListItems

时间:2015-03-03 18:37:48

标签: javascript listview titanium titanium-alloy

在Titanium Alloy移动应用项目中:

var apptList = Ti.UI.createListView();
var calendar = Ti.UI.createListSection({ headerTitle: 'Appointments'});
var appts = [];
var apptsData = [];

.....

//format: null, Startdate, Enddate, Location, AppoinmentID (repeats)
apptsData = parseDates(this.responseText);
Ti.API.info(apptsData.toString());

我的parseDates函数将这些值作为数组返回,下面我显示了toString。 (可以,他们不是所有日期)

,2013-09-30T00:00:00Z,2013-09-30T00:13:00Z,Dayton Ohio,1,,2015-10-05T00:00:00Z,2015-10-30T00:13:00Z,New York,2,,1992-10-07T00:00:00Z,1992-10-07T00:13:00Z,Demoines,3,,2013-09-30T00:00:00Z,2013-09-30T00:13:00Z,Bellbrook Ohio,4,

无论出于何种原因,我无法获取要在我的ListView中显示的值。我甚至无法访问超出这些值的数组的任何部分。

此外,按某些值递增会导致我的应用程序崩溃(没有错误消息)而有些则没有(例如i + = 5次崩溃,i + = 6则没有),就好像我正在访问不存在或不存在的数据一样其他记忆问题。

         for(var i = 0; i <= 20; i += 5){
            //skips null
            Ti.API.info(apptsData[i + 1]);
            appts.push({properties: {title: apptsData[i + 1]}});    //Start Date
            Ti.API.info(apptsData[i + 2]);
            appts.push({properties: {title: apptsData[i + 2]}});    //End Date
            Ti.API.info(apptsData[i + 3]);
            appts.push({properties: {title: apptsData[i + 3]}});    //Location

         }

第一个循环将推动&amp; print(我的ListView中显示相同的值):

[INFO] :   2013-09-30T00:00:00Z
[INFO] :   2013-09-30T00:13:00Z
[INFO] :   Dayton Ohio 

但在那之后我才得到零。

        Ti.API.info("length: " + apptsData.length);

长度返回6,而它应该更高。

下面我试图将listview /部分添加到我的窗口

        var calendar = Ti.UI.createListSection({ items: appts });
        apptList.sections = [calendar];
        $.calendarWindow.add(apptList);

2 个答案:

答案 0 :(得分:0)

如果apptsData.length(从parseDates()返回的地方之后)给出了6而不是您期望的数字,那么this.responseText或{{显然有问题1}}并且该问题与ListView无关。

使用parseDates()更好地查看数组,或者像Martin说的那样,逐步检查数值。

答案 1 :(得分:0)

好的解决方案比我想要的更愚蠢。

基本上我的parseDates函数发生了什么我递归地将数组添加到一起以获取我需要的所有信息。不幸的是我使用 array.push(otherarray)而不是 array.concat(otherarray)

我怀疑这个答案会帮助其他人,但如果你有类似上面的症状,一定要看看这个解决方案。