【问题标题】:Appcelerator Titanium tableviewrow rightImage not working on Android deviceAppcelerator Titanium tableviewrow rightImage 在 Android 设备上不起作用
【发布时间】:2012-10-29 06:35:06
【问题描述】:

我是 Titanium 的新手。

我有一个显示一些数据的表格视图。我在每一行添加了一个事件监听器来切换检查图像(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>
    
  • 我在 Ubuntu Linux 上运行 Titanium 2.1.2GA,并在具有 240 x 320 像素显示屏的 Android 2.3.6 设备上测试该应用程序

  • adb logcat 中唯一相关的部分是:

    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)在设备上在任何情况下。

感谢任何帮助。

【问题讨论】:

    标签: android android-emulator titanium titanium-mobile appcelerator-mobile


    【解决方案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();
    

    注意:我已将 eventListener 添加到 tableView 而不是 row。

    【讨论】:

    • 感谢您的努力和回应,阿南德。稍后我能够使其工作,事件监听器附加到行本身。
    • 将事件监听器附加到表格视图中不是更容易吗?
    • 我认为将事件监听器附加到行或表并没有太大区别,因为它实际上是从行到表冒泡的同一个事件。
    • 你能回答这个问题吗:stackoverflow.com/questions/13192528/…
    【解决方案2】:

    我后来能够让它工作。

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

    变化不大,只是图像路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      相关资源
      最近更新 更多