首页 > 解决方案 > 在 x 轴代表每周天数的图形视图上绘制 sqlite 数据

问题描述

我终于得到了它的绘图,但渲染的线在整个图表中保持不变,并且在 x 轴 lebaling 表示每周天数方面也存在问题。

这就是我想要实现的..

我尝试的结果

我是如何做到的...GraphActivity.OnCreate。

LineGraphSeries  lineGraphSeries = new LineGraphSeries<>(getChartData());
lineGraphSeries.setDrawDataPoints(true);

db = new DBAdapter(context);
db.openDB();
graphView.getViewport().setMaxY(db.getTotalMiles()*1.5);
db.closeDB();

设置图表。

public Datapoint getChartData(){

    db.openDB();
    Cursor cursor_miles = db.getchartdata();
    DataPoint[] dataPoints = new DataPoint[cursor_miles.getCount()];

    for (int i = 0; i<cursor_miles.getCount(); i++) {

        cursor_miles.moveToLast();

        double miles__ = cursor_cash.getDouble(cursor_miles.getColumnIndex(Constants.KEY_MILES));

        long _time =(new Date(cursor_miles.getLong(cursor_miles.getColumnIndex(Constants.DATE_))).getTime());
        dataPoints[i] = new DataPoint(_time + (i * 60 * 60 * 24 * 1000), miles__);

    }

    db.closeDB();
    return dataPoints;
}         

标签: androidsqlitedatetimegraph

解决方案


您的问题可能是您正在使用moveToLast每次迭代而不是遍历 cursor_miles 游标。

代替 :-

public Datapoint getChartData(){

    db.openDB();
    Cursor cursor_miles = db.getchartdata();
    DataPoint[] dataPoints = new DataPoint[cursor_miles.getCount()];

    for (int i = 0; i<cursor_miles.getCount(); i++) {

     cursor_miles.moveToLast();

        double miles__ = cursor_cash.getDouble(cursor_miles.getColumnIndex(Constants.KEY_MILES));

        long _time =(new Date(cursor_miles.getLong(cursor_miles.getColumnIndex(Constants.DATE_))).getTime());
        dataPoints[i] = new DataPoint(_time + (i * 60 * 60 * 24 * 1000), miles__);

    }

    db.closeDB();
    return dataPoints;
} 

你可以使用:-

public Datapoint getChartData(){

    db.openDB();
    Cursor cursor_miles = db.getchartdata();
    DataPoint[] dataPoints = new DataPoint[cursor_miles.getCount()];
    while(cursor_miles.moveToNext) {
        double miles__ = cursor_cash.getDouble(cursor_miles.getColumnIndex(Constants.KEY_MILES));
        long _time =(new Date(cursor_miles.getLong(cursor_miles.getColumnIndex(Constants.DATE_))).getTime());
        dataPoints[cursor_miles.getPosition()] = new DataPoint(_time + (cursor_miles.getPosition() * 60 * 60 * 24 * 1000), miles__);   
    }
    cursor_miles.close();
    db.closeDB();
    return dataPoints;
} 

推荐阅读