为什么在Android上使用fts3表使用加载器为空的listview?

时间:2015-05-30 05:30:48

标签: java android sql sqlite listview

基本上我使用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;

任何评论或解决方案都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

经过大量研究后,我得出的结论是,由于参数的原因,fts3表不能支持 CursorLoader()查询()

总的来说,fts3默认不支持括号,我发现上面两种方法的选择参数在执行时自动在括号内。出于这个原因,我的listview是空的,这就是为什么一旦删除了where子句,它就再次工作了。然而,我需要选择参数,并且在一天结束时我没有实际解决方案来解决此问题。