0

チタンは初めてです。

いくつかのデータを表示するテーブルビューがあります。次のようにチェック画像(rightImage)の表示を切り替えるために、各行にイベントリスナーを追加しました。

row.addEventListener('click', function(e){
    if(e.row.getHasCheck()){
            e.row.setHasCheck(false);
            e.row.rightImage = 'android/images/blank.png';
            e.rowData.rightImage = 'android/images/blank.png';
        } else {
            e.row.setHasCheck(true);
            e.row.rightImage = 'android/images/check.png';
            e.rowData.rightImage = 'android/images/check.png';
        }
    });
  • 画像click.pngとblank.pngは次のフォルダーにあります:project / Resources / android / images(密度に依存しない)

  • e.row.rightImageとe.rowData.rightImageの両方が他のいくつかの質問で言及されているので、両方を試しました。

  • 私のtiapp.xmlのAndroidマニフェストは次のようになります。

    <android xmlns:android="http://schemas.android.com/apk/res/android">
        <manifest>
            <supports-screens 
                android:smallScreens="true"
                android:normalScreens="true"
                android:largeScreens="true"
                android:anyDensity="true"
            />
        </manifest>
    </android>
    
  • UbuntuLinuxでTitanium2.1.2GAを実行し、240x320ピクセルのディスプレイを備えたAndroid2.3.6デバイスでアプリをテストしています

  • adblogcatの唯一の関連部分は次のとおりです。

    I/InputReader( 1490): dispatchTouch::touch event's action is 0
    I/InputDispatcher( 1490): Delivering touch to current input target
    I/InputReader( 1490): dispatchTouch::touch event's action is 1
    I/InputDispatcher( 1490): Delivering touch to current input target
    

    異常なことはなく、警告やエラーなどもありません。

問題:トグル(チェック/チェック解除)はAndroidエミュレーターでは完全に正常に機能しますが(実際には、カスタムイメージがなくても、エミュレーターの箱から出してすぐに正常に機能します)、機能しません(row.rightImageの表示に失敗します)いずれにせよデバイス。

どんな助けでも大歓迎です。

4

2 に答える 2

1

行の正しいイメージを変更するには、このサンプル コードを試してください。

Ti.UI.backgroundColor = 'white';
var win = Ti.UI.createWindow();

var tableData = [];

for(var index = 1; index<= 10; index++)
{
    var row = Titanium.UI.createTableViewRow({
        title       : 'row '+ index, 
        rightImage  : 'images/blue.png'
    });


    tableData.push(row);
}
var table = Ti.UI.createTableView({
    data: tableData
});

table.addEventListener('click', function(e){
        image = 'images/black.png';
        e.source.setRightImage(image);
});
win.add(table);

win.open();

注: 行ではなく tableView に eventListener を追加しました。

于 2012-10-29T07:27:30.057 に答える
1

私は後でそれを機能させることができました。

forループ内

var row = Titanium.UI.createTableViewRow({
    //I was dealing with contacts
    title : contacts[i].fullName + ", "+ contacts[i].phone.mobile[j], 
    rightImage : 'images/blank.png'
    });
row.addEventListener('click', function(e) {
    if(e.row.getHasCheck()){
        e.row.setHasCheck(false);
        e.row.setRightImage('images/blank.png');            
    } else {
        e.row.setHasCheck(true);
        e.row.setRightImage('images/check.png');            
    }
});
tableData.push(row);

大きな変更はありませんが、画像のパスです。

于 2012-10-29T11:05:28.290 に答える