Titanium Mobile: получить значение строки из таблицы при нажатии кнопки выпуска - PullRequest
0 голосов
/ 16 февраля 2012

Привет друзья,

Я занимаюсь разработкой приложения с использованием Google Place API в Titanium Development и успешно получил данные и отображение в виде таблицы и кнопку добавления в каждой строке, но Моя проблема заключается в том, что я хочу получить имя и адрес при нажатии кнопки в каждой строке поэтому, пожалуйста, дайте мне идею или любую ссылку, чтобы решить мою проблему.

Пожалуйста, посмотрите на мой скриншот, так что на btnclick я хочу получить имя и адрес.

Заранее спасибо.

var categoryName;   
var addressLabel;
var row;

var tableData=[];

PlacesListCells = function createRow() 
{ 
    //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);

            // 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:185,
                textAlign:'left',
                font:{fontSize:12}
            });

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

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

            var favoriteButton = Ti.UI.createButton
            ({
                title:'btn',
                //font:{fontFamily:'Helvetica Neue',fontSize:15},
                top:20,
                left:255,
                height:30,
                width:50,
                url:'../Images/favorite.png'
                //image:'../Images/favorite.png'
            });

            nameLabel.text = categoryName;

            getDetailsData(addressLabel,row,i);

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

            tableData[i] = row;

            //set page title for each row
            row.pageTitle = nameLabel.text;

            favoriteButton.row = i;
            favoriteButton.addEventListener('click', function(e)
            {
                Ti.API.log('favoriteButton clicked on row ' + e.source.row +' at ' + new Date().getSeconds());
                alert('favoriteButton clicked on row ' + e.source.row);

                var index = e.source.row;
                var name = tableData[index];
                alert('name'+name);

            });
        }       
        tableView.setData(tableData);       
    };
    //-- Network error
    loader.onerror = function(e)
    {
        Ti.API.info('Network error: ' + JSON.stringify(e));
    };

    // Send the HTTP request
    loader.send();

    return  tableData;
};

enter image description here

Ответы [ 2 ]

1 голос
/ 26 августа 2013
       var favoriteButton = Ti.UI.createButton({
            title:'btn',
            //font:{fontFamily:'Helvetica Neue',fontSize:15},
            top:20,
            left:255,
            height:30,
            width:50,
            url:'../Images/favorite.png'
            //image:'../Images/favorite.png',
            name:categoryName,
            address:address;//address mention here
        });

       row.add(favoriteButton);

        favoriteButton.addEventListener('click', function(e)
         {
            var index = e.source.row;
            var name = e.source.name;
            var address = e.source.address; 
            alert('name'+name);

        });
    } 

Я думаю, это может вам сильно помочь.

1 голос
/ 16 февраля 2012

Получив свой индекс, вы сможете ссылаться на исходный источник данных по нему.

...