钛移动:从tableview检索行标题及其在下一个窗口问题中的显示

时间:2012-02-14 05:05:44

标签: titanium-mobile

朋友你好,

我正在开发一个应用程序使用tableview中的自定义单元显示类别类型,然后选择一行来详细选择哪个类别类型,但我遇到的问题是我无法在下一个窗口中获得行标题。所以请告诉我如何解决它。

Ti.include('PlacesTypeCustomCell.js');
var currentWindow = Titanium.UI.currentWindow;
var tableData = [];

// Create table
var tableData = new PlacesTypeCells();

var myTableView = Titanium.UI.createTableView
({
    data:tableData,
    top:45,
    height:368

});
currentWindow.add(myTableView);

myTableView.addEventListener('click',function(e)
{
    var index = e.index;
    Ti.API.log('Row at index:'+index);
    Titanium.App.Properties.setInt('index',index);

    v//get each row title from tableview
var pageTitle = Titanium.App.Properties.setString('title',e.rowData.pageTitle);
Ti.API.log('Page Title:'+pageTitle);

var pageAddress = Titanium.App.Properties.setString('address',e.rowData.pageAddress);
Ti.API.log('Page Address:'+pageAddress);

    var win = Titanium.UI.createWindow
    ({
        url:'PlacesList.js',
        title:'Place List'
    });

    Titanium.UI.currentTab.open(win,{animated:true});
});


//Custom Cell PlacesTypeCustomCell



    var tableData=[];

    var loader = Titanium.Network.createHTTPClient();

    var url = "https://maps.googleapis.com/maps/api/place/search/json?";    
    url = url + "location=" + lat + ',' + lon;
    url = url + "&radius=" + radius;
    url = url + "&name=" + name;
    url = url + "&sensor=" + sensor;
    url = url + "&key=" + key;

    Ti.API.info(url);
    // Sets the HTTP request method, and the URL to get data from
    loader.open("GET",url);
    // Create our HTTP Client and name it "loader"
    // Runs the function when the data is ready for us to process
    loader.onload = function() 
    {
        var obj = JSON.parse(this.responseText);
        Ti.API.log(obj);    
        var results = obj.results;
        Ti.API.log(results);


        for (var i = 0; i < results.length; i++)
        {
            categoryName = obj.results[i].name; 
            reference = obj.results[i].reference;
            Ti.API.log('Refernce:'+reference);

            getDetailsData();

            // Create a row and set its height to auto
            row = Titanium.UI.createTableViewRow({height:'78'});

            var placeImage =  Titanium.UI.createImageView
            ({
                image:'../iphone/appicon.png',
                width:70,
                height:50,
                top:12,
                left:5
            });

            // Create the label to hold the tweet message
            var nameLabel = Titanium.UI.createLabel({
                //text:name,
                left:80,
                top:5,
                height:'auto',
                width:200,
                textAlign:'left',
                font:{fontSize:12}
            });

            // Create the label to hold the tweet message
            addressLabel = Titanium.UI.createLabel({
                left:80,
                top:25,
                height:'auto',
                width:200,
                textAlign:'left',
                font:{fontSize:14}
            });

            var arrowImage = Ti.UI.createImageView
            ({
                image:'../iphone/appicon.png',
                width:20,
                height:20,
                left:280,
                top:30
            });

            nameLabel.text = categoryName;

            getDetailsData(addressLabel);

            row.add(placeImage);
            row.add(nameLabel);
            row.add(addressLabel);
            row.add(arrowImage);

            tableData[i] = row;

            //set page title for each row
            row.pageTitle = tableData[i];
            row.pageAddress = tableData[i];
        }

        tableView.setData(tableData);

    };

//PlaceList.js
var currentWindow = Titanium.UI.currentWindow;
//retrive index value
var index = Titanium.App.Properties.getInt('index');
Ti.API.log('NextView Index:'+index);

var title = Titanium.App.Properties.getString('title');
Ti.API.log('CheckInView Title:'+title);

var address = Titanium.App.Properties.getString('address');
Ti.API.log('CheckInView Address:'+address);

enter image description here

我的问题是我无法在下一个窗口中获得行标题,但我得到该行的索引值,所以请告诉我如何获取它。

1 个答案:

答案 0 :(得分:1)

请在以下行之后执行此操作:

  

var row = Titanium.UI.createTableViewRow({height:'auto'});

将标题设置为行的属性,如下所示:

  

row.pageTitle = tableData [i];

在点击事件中你可以得到这样的属性:

myTableView.addEventListener('click',function(e)
{ 
   e.rowData.pageTitle
}