如何组合此值并添加到tableview行?

时间:2016-02-17 00:46:44

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

我有一个谷歌远距离矩阵api的列表值以及目的地列表。我现在所做的是:

1)从地理位置获取输出目的地列表google places api和当前位置(lon& lat)。 2)目的地和当前位置列表(lon& lat)从google远程矩阵api输出远程和持续时间列表。

现在有两个单独的输出,它是google远程矩阵和目的地列表中的列表值。

两者都被带到输出功能以显示到tableview。那么现在的问题是,我想如何组合这两个值并显示在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中的所有输出。现在只有最后一个值添加到tableview中。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

对不起,您的代码段中有几个问题。

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

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

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

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

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

    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);
     };