android - Android 中带有开关框的钛 TableView 在滚动时会导致问题?

标签 android titanium

我创建 TableView ,每行将包含文本和复选框,该复选框使用数据库中的值加载该行,其中我在默认情况下设置了一些复选框,其余为假,但是当我滚动时,默认情况下会选择我设置的复选框它是错误的,而滚动时只出现问题,我不知道如何解决。

这是我使用的代码。

我还尝试不为复选框设置默认值,我将所有复选框初始化为 false,同时在运行时选择任何复选框并向下滚动也选择了其他一些文本框,它仅在滚动时发生,我不这样做知道如何解决这个问题,如果有人知道的话请帮助我。

function setArray(){                
            var db = Ti.Database.install('../databases/ChecklistDB.sqlite','ChecklistDB');
            var rows = db.execute('SELECT DISTINCT category, defaultCheck FROM revcheck ORDER BY id');              
            var dataArray = [];         
            while (rows.isValidRow())
            {                   
                var bgcolor = 'black';
                var fontColor = 'white';                                    
                dataArray.push({
                    title: rows.fieldByName('category'),
                    check: rows.fieldByName('defaultCheck'),
                hasChild:true,           
                backgroundColor:bgcolor,
                color:fontColor,                    
                font:{fontSize:'12dp',fontFamily:'Helvetica Neue',fontWeight:'bold'}, 
                path:'../scripts/Contents.js'

                });
                rows.next();    
            }
            dataItems = [];
            //var checkbox=[];              
                for (var i =0; i < dataArray.length; i++) {
                var row = Titanium.UI.createTableViewRow();             
                var lblTitle = Titanium.UI.createLabel({
                text:dataArray[i].title,
                left:40                     
                });

                    var checkbox= Titanium.UI.createSwitch({
                    style:Titanium.UI.Android.SWITCH_STYLE_CHECKBOX,    
                    ret:dataArray[i].title,
                    left:0
                        }); 


                    if(checkbox.ret=='Metadata'){
                         checkbox.value = true;
                    }           
                     else{
                        checkbox.value = false;
                     }
                var button = Titanium.UI.createButton({
                image:'../images/arrows.png',
                left:270                    
                }); 
                button.addEventListener('click', function(){
                var win = Titanium.UI.createWindow({
                url:'../scripts/Contents.js',               
                fullscreen: false
                }); 
                    win.open();
                });


                row.add(lblTitle);
                row.add(checkbox);
                row.label = lblTitle;                   
                //row.checkbox = checkbox;
                row.add(button);
                row.button = button;
                row.className = 'ContentsRow';
                dataItems.push(row);


                }   
            tableview.setData(dataItems);


        }

        var tableview = Ti.UI.createTableView({
            backgroundColor:'black',
            backgroundSelectedColor:'#12A1FF',                  
            top:'2%',
            left:0,
            height:'95%',
            width:'100%'                
        }); 

        setArray();

谢谢。 enter image description here enter image description here

最佳答案

尝试在表上设置 className 属性。还有您使用的 SDK 版本。

关于android - Android 中带有开关框的钛 TableView 在滚动时会导致问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332218/

相关文章:

javascript - 从 JSON 对象到 Tableview

ios - 如何在iPhone 6和6 Plus模拟器中启动使用Titanium构建的iOS应用?

javascript - 从其他 .js 文件访问函数

java - 以编程方式在Android上绘制虚线

java - 不要将 Android 上下文类放在静态字段中;这是内存泄漏

android - 不可恢复的错误。 mremap() : failed: Out of memory in io_realm_internal_SharedGroup. cpp 第 188 行

java - 如何使用 Java 代码为 iOS 创建钛移动模块?

javascript - 检查互联网连接是否正常

android - 在android应用程序中获取异常 "getViewID() < 0, Status: 404 (HTTP 404 not_found)"

titanium - 如何获取应用程序版本?