【问题标题】:ListView doesn't show all ListItemsListView 不显示所有 ListItem
【发布时间】:2015-03-03 18:37:48
【问题描述】:

在钛合金移动应用项目中:

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

         }

第一个循环将推送和打印(相同的值显示在我的 ListView 中):

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

但在那之后我只会得到空值。

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

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

下面我正在尝试将列表视图/部分添加到我的窗口中

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

【问题讨论】:

  • 使用调试器单步调试应用程序,在单步调试时不断检查 apptsData 值。我知道有些人喜欢依赖 Ti.API.info 进行调试。这里可能没有足够的源代码来确定问题。我知道在某些项目中很难提供适量的代码,但是当所有代码都像这样被切碎时,你真的无法帮助确定哪里出了问题。
  • 是的,我正在尝试这样做。无论出于何种原因,我的调试器都搞砸了(不显示变量值,也不在断点处停止)。但我认为这是一个完全不同的问题。如果我修复它并解决我的问题,我一定会发布更新。

标签: javascript listview titanium titanium-alloy


【解决方案1】:

如果apptsData.length(就在它从parseDates()返回的位置之后)给出6而不是您期望的数字,那么显然this.responseText或parseDates()有问题并且问题与列表视图。

使用console.info(JSON.stringify(apptsData, null, ' ')) 可以更好地查看数组,或者像 Martin 所说的那样,逐步检查值。

【讨论】:

    【解决方案2】:

    好吧,这个解决方案比我想的要笨一点。

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

    我怀疑这个答案是否会帮助其他人,但如果您有与我上面类似的症状,请务必查看此解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多