选择钛中表视图行中的特定元素

时间:2011-09-27 08:09:31

标签: javascript android titanium

您好我正在使用Titanium开发Android应用程序。我想在点击事件上更改图像。但我无法在表格视图中选择特定图像。我使用以下代码:

var user_table = Ti.UI.createTableView({minRowHeight:5.length,hasChild:true});
var data = [];
for (var i=0;i<5.length;i++)
    {
        var row = Ti.UI.createTableViewRow({height:'auto',className:"row"});
        var username = Ti.UI.createLabel(
        {
            text:'user name',
            height:'auto',
            font:{fontSize:12, fontFamily:'Helvetica Neue', color:'#000'},
            width:'auto',
            color:'#000',
            textAlign:'left',
            top:0,
            left:35,
        });row.add(username);
var imageView = Ti.UI.createImageView(
        {
            image:'../images/user.png',
            left:0,
            top:0,
            height:25,
            width:25
        });row.add(imageView);          
    }
    feed_table.setData(data);
    feedWin.add(feed_table); 

我想在特定的表视图行中定位图像,以便我可以在点击事件中将其替换为另一个图像。帮助我选择特定的图像

2 个答案:

答案 0 :(得分:3)

1)在表视图中,在整行上设置事件监听器。

tableView.addEventListener('click',function(event){
    if ( event.source.id === undefined ) {
        // if no id defined then you know it is not an image...
    } else {
        // you have an id, you have an image..
        var rowNumber = event.index;
        var image = event.source;
    }
});

2)创建图像时,在每个图像上设置一个id,以便在点击事件中识别它

var imageView = Ti.UI.createImageView({
    id :"image_"+ i, // set object id
    image:'../images/user.png',
    left:0,
    top:0,
    height:25,
    width:25
 });

答案 1 :(得分:-1)

我会这样做:

addRow = function(_args)
{
  var row = Ti.UI.createTableViewRow(
  {
    height:'auto',
    className:"row"
  });

  var username = Ti.UI.createLabel(
  {
    text: _args.text || 'user name',
    height:'auto',
    font:{fontSize:12, fontFamily:'Helvetica Neue', color:'#000'},
    width:'auto',
    color:'#000',
    textAlign:'left',
    top:0,
    left:35,
  });
  row.add(username);

  var imageView = Ti.UI.createImageView(
  {
    image:_args.image||'../images/user.png',
    left:0,
    top:0,
    height:25,
    width:25
  });
  row.add(imageView);    

  row.setImage = function(image)
  {
    imageView.imageURL = image;
  };

  row.addEventListener('click',function(e)
  {
    row.setImage('new/image/path');
  };

  return row;
}

var user_table = Ti.UI.createTableView({minRowHeight:5.length,hasChild:true});
var data = [];
for (var i=0;i<5.length;i++)
{
  var newRow = addRow({
    text: 'my text',
    image: 'my image url'
  });
  data.push(newRow);
}

feed_table.setData(data);
feedWin.add(feed_table); 

如果你需要设置网址,你也应该使用

feedWin.data[0].rows[indexOfRow].setImage('another/image/path');
试一试。没有编译,所以这只是一个提案。

[更新] 请注意'自动'值可能会在Android上吮吸。