2011-04-06 91 views
1

我一直在研究這個,並沒有發現那裏 - 可能是因爲它非常簡單。我試圖從我有的遊標中填充agraphengine的條形圖。我已經確認光標拉回了30行(預計),但我不知道該從哪裏去。從數據庫填充achartengine圖

這裏是我的數組,我填充:

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返回多個數據集與每個值在每個。這可能不是你想要的。 – larlin 2012-06-28 13:24:18

回答

2

您需要輸入相應的值以匹配字符串和顏色數組中的每個條。您可能只看到一個標題爲「總計」的藍色欄。