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);
症状是它似乎只从数组列表中拉第一个数字,因为它只会绘制一个酒吧。任何建议表示赞赏。
您正在以一种奇怪的方式使用buildBarDataset,我猜你已经从示例中获取了它?它看起来像你修改它?以什么方式?我的猜测是,buildBarDataset返回多个数据集与每个值在每个。这可能不是你想要的。 – larlin 2012-06-28 13:24:18