Построение sqlite данных на графике, где ось X представляет недельные дни - PullRequest
0 голосов
/ 04 мая 2018

Я, наконец, построил график, но отображаемая линия остается постоянной на всем графике, и у меня также возникают проблемы с выравниванием по оси X для представления дней недели.

Это то, чего я хочу достичь ..

Результаты того, что я попробовал

как я этого добился ... 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;
}         

1 Ответ

0 голосов
/ 04 мая 2018

Ваша проблема может заключаться в том, что вы используете 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;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...