基本上我使用CursorLoader加载数据的listview在我的普通表中显示正常,但是一旦我将表转换为fts3(使用MATCH进行搜索),它就停止显示数据。
表格声明:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
</head>
<body>
Diameter: <input type="number" id="TreeDiameter" value="">
<button onclick="myFunction()">Calculate</button>
<p id="demo"></p>
<div id="container" style="width:50%; height:400px;"></div>
</body>
<script>
var Results=[];
function myFunction() {
var TreeDiameter = document.getElementById("TreeDiameter").value;
for (i = 0; i <=3; i++) {
var r = i + TreeDiameter;
Results[i]=parseInt(r);
}
document.getElementById("demo").innerHTML = Results;
setTimeout(function(){
var Results1=Results;
$('#container').highcharts({
chart: {
type: 'scatter',
zoomType: 'x'
},
title: {
text: 'CO2 stored by your tree'
},
xAxis: {
type: 'datetime',
minRange: 365 * 24 * 3600000 // fourteen days
},
yAxis: {
title: {
text: 'CO2 sequestered (kg)'
}
},
legend: {
enabled: false
},
plotOptions: {
area: {
fillColor: {
linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1},
stops: [
[0, Highcharts.getOptions().colors[0]],
[1, Highcharts.Color(Highcharts.getOptions().colors[0]).setOpacity (0).get('rgba')]
]
},
marker: {
radius: 2
},
lineWidth: 1,
states: {
hover: {
lineWidth: 1
}
},
threshold: null
}
},
series: [{
type: 'area',
name: 'Cummulative CO2 stored',
pointInterval: 365 * 24 * 3600000,
pointStart: Date.UTC(2015, 0, 1),
data:Results1
}]
});
}, 1000);
}
</script>
</html>
onCreateCursorLoader:
public static final String NOTES_SCHEMA="CREATE VIRTUAL TABLE "+TABLE_NAME+" USING fts3("+
"_id INTEGER PRIMARY KEY"+COMMA+NOTE_TITLE+" TEXT"+COMMA+NOTE_TEXT+" TEXT"+COMMA+TRASH_STATUS+" INTEGER DEFAULT 0"+COMMA+TIME+" INTEGER"+");";
我也注意到当我删除where参数时,它起作用了(但我需要那个参数)。
内容提供商:
case LOADER_NOTELIST_ID:
String[] projection = new String[]{NotesModel.NotesTable._ID, NotesModel.NotesTable.NOTE_TITLE, NotesModel.NotesTable.NOTE_TEXT,NotesModel.NotesTable.TIME,NotesModel.NotesTable.TRASH_STATUS};
String sortOrder = NotesModel.NotesTable.TIME+ " DESC";
String where = NotesModel.NotesTable.TRASH_STATUS+"=0";
CursorLoader cursorLoader = new CursorLoader(getApplicationContext().getApplicationContext(), uri, projection, where, null , sortOrder
);
return cursorLoader;
任何评论或解决方案都将受到高度赞赏。
答案 0 :(得分:1)
经过大量研究后,我得出的结论是,由于参数的原因,fts3表不能支持 CursorLoader()或查询()。
总的来说,fts3默认不支持括号,我发现上面两种方法的选择参数在执行时自动在括号内。出于这个原因,我的listview是空的,这就是为什么一旦删除了where子句,它就再次工作了。然而,我需要选择参数,并且在一天结束时我没有实际解决方案来解决此问题。