2012-05-03 4 views
0

Я хочу получить некоторые значения из таблицы и сохранить их в многострочной диаграмме. Когда я использую только один столбец (жир), он отображает график правильно, но когда я добавляю другой столбец или два, он дает мне ошибку: . Набор данных и рендеринг не должны быть нулевыми и не должны иметь одинаковое количество серий. Не могли бы вы помочь мне исправить ошибку?AChartGraph с несколькими строками

public XYMultipleSeriesDataset getFatDataset() { 

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
    Cursor c = database.rawQuery("select * from dailystats;", null); 
    float i = 1.0f; 

    c.moveToFirst(); 
    XYSeries seriesFat = new XYSeries("Fat"); 
    while(!c.isAfterLast()) { 
     seriesFat.add(i++, c.getDouble(2)); 

     c.moveToNext(); 
    } 
    dataset.addSeries(seriesFat); 

    i = 1.0f; 
    c.moveToFirst(); 
    XYSeries seriesProtein = new XYSeries("Protein"); 
    while(!c.isAfterLast()) { 

     seriesProtein.add(i++, c.getDouble(3)); 

     c.moveToNext(); 
    } 
    dataset.addSeries(seriesProtein); 

    c.moveToFirst(); 
    i = 1.0f; 
    XYSeries seriesCarbs = new XYSeries("Carbs"); 
    while(!c.isAfterLast()) { 

     seriesCarbs.add(i++, c.getDouble(4)); 
     c.moveToNext(); 
    } 
    dataset.addSeries(seriesCarbs); 

    return dataset; 
} 

А вот код для генерации графика:

public class ChartActivity { 

public Intent getIntent(Context context) 

{

XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 


XYMultipleSeriesRenderer mrenderer = new XYMultipleSeriesRenderer(); 
XYSeriesRenderer renderer = new XYSeriesRenderer(); 
mrenderer.addSeriesRenderer(renderer); 

DatabaseAdapter dba = new DatabaseAdapter(context); 
dba.open(); 


Intent intent = ChartFactory.getLineChartIntent(context, dba.getFatDataset(), mrenderer,"line graph"); 
dba.close(); 

return intent; 

}

}

ответ

0

ошибка сообщила совершенно ясно: Dataset and renderer should not be null and should not have the same number of series означает, что вы используете другое количество сериализаторов серии и серии. Infact, вы добавляете два наборы данных:

//... 
dataset.addSeries(seriesFat); 
//.... 
dataset.addSeries(seriesCarbs); 
//.... 

Но у вас есть только один XYSeriesRenderer():

mrenderer.addSeriesRenderer(renderer); 

На мой взгляд, ваш код должен начать работать просто добавив еще один рендер в XYMultipleSeriesRenderer(), используйте следующие две линии:

XYSeriesRenderer renderer2 = new XYSeriesRenderer(); 
mrenderer.addSeriesRenderer(renderer2); 
Смежные вопросы