2012-05-03 9 views
0

テーブルからいくつかの値を取得し、複数の折れ線グラフに格納したいと考えています。 私は1つの列(太っている)を使用するとグラフが正しく表示されますが、別の列を2つ追加するとエラーメッセージが表示されます。 データセットとレンダラーはnullであってはならず、 エラーを修正するのを手伝ってください。複数行の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()に別のレンダラを追加する作業を開始する必要があり、次の2行で試してください:

XYSeriesRenderer renderer2 = new XYSeriesRenderer(); 
mrenderer.addSeriesRenderer(renderer2);