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

发布于 2024-12-06 10:36:45 字数 988 浏览 1 评论 0原文

您好,我正在使用 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); 

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

hi I am developing Android application using Titanium. I want to change image on click event.But I am unable to select particular image in table view.I used following code:

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

I want to target image in particular row of table view so that i can replace it with another image on click event. help me for selecting that particular image

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱本泡沫多脆弱 2024-12-13 10:36:45

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) in your table view, set the event listener on the whole row.

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) when you create your images, set an id on each one so you can identify it in the click event

var imageView = Ti.UI.createImageView({
    id :"image_"+ i, // set object id
    image:'../images/user.png',
    left:0,
    top:0,
    height:25,
    width:25
 });
没有伤那来痛 2024-12-13 10:36:45

我会这样做:

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

尝试一下。没有编译,所以这只是一个建议。

[更新] 请注意,“auto”值可能会在 android 上表现不佳。

i would do it this way:

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

if you need to set the url you should also use

feedWin.data[0].rows[indexOfRow].setImage('another/image/path');

give it a try. didn't compile that, so it's just a proposal.

[update] be aware that 'auto' values may suck at android.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文