【问题标题】:How can I combine this value and add into tableview row?如何组合这个值并添加到 tableview 行中?
【发布时间】:2016-02-17 00:46:44
【问题描述】:

我有一个来自谷歌远程矩阵 API 的列表值以及目的地列表。我现在做的是:

1) 从地理位置获取输出目的地列表 google places api 和当前位置(经度和纬度)。 2)目的地和当前位置列表(经度和纬度)已经从谷歌远程矩阵api输出了距离和持续时间的列表。

现在有两个单独的输出,分别是来自 google 远程矩阵和目标列表的列表值。

两者都被带到输出函数以显示到表格视图。那么现在的问题是,我想如何组合这两个值并在 tableview 行中显示?

我需要组合这个值并添加到 tableview 行中。我现在拥有的只是添加到 tableview 行中的最后一个值。让我们看看代码和图像:

var getValue = function(matrix,all) {
    var matrix;
    var all;
    //Ti.API.info(matrix);
    //Ti.API.info(all);
    var section = Titanium.UI.createTableViewSection();
    var data = [];

    for (var i=0;i<matrix.length;i++)    
    {       
         var distance = matrix[i].elements[0].distance.text;
         Ti.API.info(distance);     

         var lblDist = Ti.UI.createLabel({
         width: 'auto', height: 23, left: 52,
         textAlign: "left", font: {fontSize: 10, fontFamily:"HelveticaNeue-Bold"}, bottom: -2});
         lblDist.text = distance;       
    };    

    for (var c=0;c<all.length;c++)    
    {

         var row = Ti.UI.createTableViewRow({height:45,selectedBackgroundColor: '#dbd9cc'}); 

         var label = Ti.UI.createLabel({left:52,top:2,        
         width:245,height:30,font:{fontFamily:'Open Sans',fontSize:20,fontWeight:'bold'}});

         var sTitle = all[c].name;
         label.text = sTitle;
         //lblDist.text = distance;

         row.add(label);
         row.add(lblDist);
         section.add(row);
         tableview.data=[section]; 
         self.add(tableview);   
    }
};

当我执行Ti.API.info(distance); 时,它会列出我想要添加到表视图中的所有输出。现在只有最后一个值添加到 tableview 中。

【问题讨论】:

    标签: javascript appcelerator appcelerator-titanium google-distancematrix-api


    【解决方案1】:

    很抱歉,您的代码 sn-p 有几个问题。

    让我试着帮你解决一些问题。

    1. 您需要注意 JavaScript [1] 中变量的声明、范围和提升。然后,您会意识到,在第一个循环结束时,您将只存储最后一个 Label 对象,在您的情况下,Label 文本 = 1.0km

    2. 在您的第二个循环中,发生了同样的错误。您正在向屏幕添加 all.length 倍于屏幕上的 tableview

    3. 您需要了解这两个循环将依次运行。然后,此解决方案仅在两个循环具有相同长度时才有效。

    基于第三点,我可以写一个示例解决方案。

    var getValue = function(matrix,all) {
         var lblDist = null;
         var label = null;
         var data = [];
    
         for (var i=0;i<matrix.length;i++) {
              var row = Ti.UI.createTableViewRow({height:45,selectedBackgroundColor: '#dbd9cc'}); 
              lblDist = Ti.UI.createLabel({width:'auto', height: 23, left: 52, textAlign: "left", font: {fontSize: 10, fontFamily:"HelveticaNeue-Bold"}, bottom: -2});
              lblDist.text =  matrix[i].elements[0].distance.text;       
              label = Ti.UI.createLabel({left:52,top:2,width:245,height:30,font:{fontFamily:'Open Sans',fontSize:20,fontWeight:'bold'}});
              label.text = matrix[i].elements[0].name.text;
              row.add(label);
              row.add(lblDist);
              data.push(row);
         }
    
         self.add(tableview);
         tableview.setData(data);
     };
    

    【讨论】:

    • 嗨,谢谢你的例子。无论如何,我通过改变编码策略解决了这个问题。从 google 距离矩阵和 google places api 输出所有值,将它们全部保存到数据库中。通过加入表来调用它们并打开并选择数据库并将所有内容放入表视图中。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    相关资源
    最近更新 更多