2011-09-27 65 views
2

您好我正在开发使用钛的Android应用程序。我想改变点击图片event.But我无法在表view.I来选择特定的图像使用下面的代码:在钛表行视图中选择特定元素

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

我想要的目标表视图的特定行的图像,这样我可以取代它与点击事件的另一个图像。帮我选择特定的图像

回答

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

嗨亚伦感谢reply.I上面的代码尝试,但它给了我错误**“事件”**没有定义。 – nilkash

+1

抱歉,代码并不完美,但是您应该能够在大约30行代码中对未定义的变量进行简单的调试和分析?已作出更改 –

-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。

+1

我下来投了几个原因:有一个良好的金额你可以在这里避免复杂性。将事件监听器添加到每一行是没有必要的,并且会引入额外的权重。正如Aaron的示例所演示的,您可以在整个表中添加一个侦听器,并查看单击哪些元素(event.source)来控制单击元素时发生的情况。我也建议你不要在每一行上存储函数。如果你有几千行,这意味着几千个独特的功能,当你真的只需要一个。合理? –