我创建 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();
谢谢。
最佳答案
尝试在表上设置 className 属性。还有您使用的 SDK 版本。
关于android - Android 中带有开关框的钛 TableView 在滚动时会导致问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7332218/