2011-09-29 11 views
1

こんにちは、私は、チタンを使用してAndroidアプリケーションを開発しています。クリックで画像を変更するには、次のコードを使用しました。しかし、問題は、画像をクリックすると一度だけ(最初のクリックで)変更されます。もう一度クリックすると、変更された画像は表示されません。しかし警告では、画像ソースが変更されたことを示しています。 (変更は画面に反映されません!!)もう一つの問題は、クリックすると(画像が変更される)、子ウィンドウに戻り、戻ってくることです。変更内容は保持されません。テーブルビューで変更された要素を変更して保持するチタン

var feed_table = Ti.UI.createTableView({minRowHeight:5,hasChild:true}); 
var data = []; 
for (var i=0;i<5;i++) 
{ 
var row = Ti.UI.createTableViewRow({height:'auto',className:"row"}); 
var username = Ti.UI.createLabel(
{ 
    text:'nilkash', 
    height:'auto', 
    font:{fontSize:12, fontFamily:'Helvetica Neue'}, 
    width:'auto', 
    color:'#000', 
    textAlign:'left', 
    top:0, 
    left:35, 
});row.add(username); 
var doneCheckbox = Titanium.UI.createImageView(
{ 
    id:'image_'+i, 
    clickName:'ClickName', 
    image:'../images/finished-work.png', 
    width:15, 
    height:15, 
    top:32, 
    left:0, 
});row.add(doneCheckbox) 
data.push(row); 
} 
feed_table.setData(data); 
feedWin.add(feed_table); 
feed_table.addEventListener('click',function(e) 
{ 
    if (e.source.clickName == 'ClickName') 
    { 
     if(feed_table.data[0].rows[e.index].children[1].image == '../images/work.png') 
     { 
      feed_table.data[0].rows[e.index].children[1].image = '../images/finished-work.png'; 
     } 
     else if (e.source.clickName == 'ClickName') 
     { 
      feed_table.data[0].rows[e.index].children[1].image = '../images/work.png'; 
     } 
    } 
}); 

また、2つの画像を切り替えるだけの別の簡単なソリューションも使用しました。しかし、これらの変更も保持しません。その変更を再度テーブルビューにプッシュする必要があるかどうか事前に助けてくれてありがとう。

答えて

1

私は同じ問題を抱えていました。最後に、古いイメージを削除し、クリックイベントごとに新しいイメージに置き換えました。それは迷惑だが、私は他の解決策を見いださなかった。チタンのアンドロイド部分は時々かなりバギーです。

[更新] iはold code少し改変:私は背景画像とCREATEVIEWを使用使用することを好む

/* creates our imageView with specific url */ 
createImage = function(url) 
{ 
    var imageView = Ti.UI.createImageView(
    { 
    image:url, 
    left:0, 
    top:0, 
    height:25, 
    width:25 
    }); 

    return imageView; 
}; 

/* creates our tableview row with imageView */ 
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); 

    /* create initial imageview */ 
    var imageView = createImage(_args.image); 
    row.add(imageView);  

    /* custom function to set image */ 
    row.setImage = function(image_url) 
    { 
    /* remove the old image */ 
    row.remove(imageView);  
    imageView = null; 

    /* add new image */ 
    imageView = createImage(image_url); 
    row.add(imageView); 
    }; 

    row.addEventListener('click',function(e) 
    { 
    /* on click replace the image */ 
    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); 
+0

クイックreply.butありがとうございました。テーブルビューで別のイメージを削除して配置する方法。この問題は最初に** feed_table.setData(data); and feedWin.add(feed_table); **画像を置き換えるコードを実行します。そこには何らかの解決策があります。 – nilkash

+0

私の投稿が更新されました。お役に立てれば – mkind

0

を、それが正常に動作します。私はCheckBoxesをシミュレートするために使用しても問題はありません。

0

TableViewとTableViewRowのTi.UI.SIZEを高さと幅の両方で削除してください...うまくいきます。

関連する問題