2011-09-27 2 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), 그래서 당신은 내가 아래 몇 가지 이유로 투표를 한 클릭 이벤트

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

안녕하세요, Aaron 님, 회신 해 주셔서 감사합니다. 위의 코드를 시도했지만 오류가 발생했습니다. ** "이벤트"**는 정의되지 않았습니다. – nilkash

+1

죄송합니다. 코드가 완벽하지는 않지만 약 30 줄의 코드에서 정의되지 않은 변수를 간단한 디버깅 및 분석이 가능해야합니까? 변경되었습니다. –

-1

을 선택 도와 : 당신이 URL을 설정해야하는 경우

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

사용해야합니다. 그것을 컴파일하지 않았기 때문에 그것은 단지 제안 일뿐입니다.

[업데이트] '자동'값이 안드로이드에서 빨라질 수 있습니다.

+1

에서 식별 할 수 각각에 ID를 설정 : 좋은 금액이있다 복잡성을 피할 수 있습니다. 모든 행에 이벤트 리스너를 추가 할 필요가 없으며 추가 가중치를 도입합니다. Aaron의 예에서 알 수 있듯이 전체 표에 리스너를 추가하고 클릭 한 요소 (event.source)를보고 요소가 클릭 될 때 발생하는 것을 제어 할 수 있습니다. 또한 각 행에 함수를 저장하지 않는 것이 좋습니다. 2 천 개의 행이 있다면, 이것은 정말로 수천 개의 고유 한 기능을 필요로합니다. 이해가 되니? –