【问题标题】:Ploting sqlite data on a graphview where x-axis represents Weekly days在 x 轴代表每周天数的图表视图上绘制 sqlite 数据
【发布时间】:2018-05-04 09:43:10
【问题描述】:

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

This is what i want to achieve..

Results of what i tried

我是如何做到的...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;
}         

【问题讨论】:

    标签: android sqlite datetime graph


    【解决方案1】:

    您的问题可能是每次迭代都使用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;
    } 
    

    【讨论】:

    • 它工作了,现在图表绘制得很好,唯一的问题是这只是问题的一半。如何标记 x 轴以表示一周中的每一天。
    • @M.Dixon 我通常专门处理 SQLite,这显然是您面临的主要问题。我的猜测是,这只是做一些阅读来修复标签的情况。这实际上应该是第二个问题,因为很明显你应该问“一个特定的编程问题”What topics can I ask about here?。我建议你应该表达一些感激之情,而不是把让你进步的帮助视为“不够”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多