Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在表格视图中的行中选择特定元素_Javascript_Android_Titanium - Fatal编程技术网

Javascript 在表格视图中的行中选择特定元素

Javascript 在表格视图中的行中选择特定元素,javascript,android,titanium,Javascript,Android,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',

嗨,我正在用钛开发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); 
var user_table=Ti.UI.createTableView({minRowHeight:5.length,hasChild:true});
var数据=[];

对于(var i=0;i我会这样做:

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); 
试一试。我没有编译它,所以它只是一个建议

[update]请注意,android上的“自动”值可能很糟糕。

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

你好,Aaron,谢谢你的回复。我尝试了上面的代码,但它给我的错误是“事件”没有定义。对不起,代码不是完美的,但是你应该能够在大约30行代码中对一个未定义的变量进行简单的调试和分析?我投票反对的原因有两个:这里有大量的复杂性可以避免。没有必要向每一行添加事件侦听器,这会增加额外的权重。正如Aaron的示例所示,您可以将侦听器添加到整个表中,并查看单击了哪些元素(event.source),以控制单击元素时发生的情况。我还建议您不要在每行存储函数。如果有几千行,这就意味着有几千个独特的函数,而实际上只需要一个。有道理?
var imageView = Ti.UI.createImageView({
    id :"image_"+ i, // set object id
    image:'../images/user.png',
    left:0,
    top:0,
    height:25,
    width:25
 });