Заполнение ахартенжинового графика из базы данных

1

Я исследовал это и не нашел много там - возможно, потому что это очень просто. Я пытаюсь заполнить гистограмму в agraphengine из курсора, который у меня есть. Я подтвердил, что курсор оттягивает 30 строк (ожидается), но я не знаю, куда идти оттуда.

Вот мой массив, который я заполняю:

    public static List<double[]> getChartData(int iDays){
    List<double[]> values = new ArrayList<double[]>(); 

//курсор возвращает ожидаемые 30 результатов

    Cursor graphData = db.query(CS_Table, new String [] {"count(*)-1"}, null, null, "strftime('%Y-%m-%d',  " + Time + ")", "strftime('%Y-%m-%d', " + CS_Drink_Time + ") BETWEEN strftime('%Y-%m-%d', date('now','-" + iDays + " day')) and strftime('%Y-%m-%d','now')", Time , null); 

    for(graphData.moveToFirst(); graphData.moveToNext(); graphData.isAfterLast()) {
        values.add(new double[] {graphData.getInt(0)});
        graphData.moveToNext();
        }

    graphData.close();
    return values;  
}

И вот что называется функцией - от achartengine:

 public Intent execute(Context context) {
    String[] titles = new String[] { "total" };
   List<double[]> values = new ArrayList<double[]>(DBhelper.getChartData(30));
values.addAll(DBhelper.getChartData(30));   
    int[] colors = new int[] { Color.BLUE};
    XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
    setChartSettings(renderer, "Drinks in the past " + DBhelper.getChartData(30) + " days", "Date", DBhelper.CS_YDrinks, 0,
        /*y axis*/32, 0, /*x axis*/10, Color.GRAY, Color.LTGRAY);
    renderer.setXLabels(12);
    renderer.setYLabels(10);
    renderer.setDisplayChartValues(true);
    renderer.setXLabelsAlign(Align.LEFT);
    renderer.setYLabelsAlign(Align.LEFT);
    // renderer.setPanEnabled(false);
    // renderer.setZoomEnabled(false);
    renderer.setZoomRate(1.1f);
    renderer.setBarSpacing(0.5);
    return ChartFactory.getBarChartIntent(context, buildBarDataset(titles, values), renderer,
        Type.STACKED);

Симптом состоит в том, что он, кажется, только вытаскивает первое число из списка массивов, поскольку он будет отображать только один бар. Любые предложения приветствуются.

  • 2
    Вы используете buildBarDataset странным образом, я думаю, вы взяли его из примеров? Похоже, вы изменили его? Каким образом? Я предполагаю, что buildBarDataset возвращает несколько наборов данных с каждым из значений в каждом. Это, вероятно, не то, что вы хотите.
Теги:
database
achartengine

1 ответ

2

Вам нужно поместить соответствующее значение для соответствия каждой строке в строках и цветовых массивах. Вероятно, вы видите только одну синюю полосу с названием "total".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню