2011-09-27 66 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)來控制單擊元素時發生的情況。我也建議你不要在每一行上存儲函數。如果你有幾千行,這意味着幾千個獨特的功能,當你真的只需要一個。合理? –