如何在表格行中绘制aChartEngine饼图

时间:2012-08-28 10:44:00

标签: android achartengine

这是我正在使用的代码。我删除了生成行中显示的其他信息的代码,并且仅提供了与饼图的创建和添加相关的代码。如果我删除行“layout.addView(mChartView);”然后生成表格并显示所有其他信息,但当然,它不会显示饼图。

    TableLayout table = (TableLayout) findViewById(R.id.table);
    TableRow row = (TableRow) findViewById(R.id.tableRow);

    LayoutInflater inflater = getLayoutInflater();
    GlobalData global = ((GlobalData)getApplicationContext());
    for( int i = 0; i < global.getData(0).size(); i++){

        DataModel current = global.getData(0).get(i);

        row = (TableRow)inflater.inflate(R.layout.tablerow, table, false);
        row.setTag(i);
        row.setClickable(true);

        //pie chart
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.chart);
        int[] values = {50, 100};
        CategorySeries series = new CategorySeries("Market share");
        int k = 0;
        for (int value : values) {
            series.add("Section " + ++k, value);
        }

        int[] colors = new int[] { Color.BLUE, Color.YELLOW };

        DefaultRenderer renderer = new DefaultRenderer();
        for (int color : colors) {
            SimpleSeriesRenderer r = new SimpleSeriesRenderer();
            r.setColor(color);
            renderer.addSeriesRenderer(r);
        }

        mChartView = ChartFactory.getPieChartView(null, series, renderer);
        layout.addView(mChartView);

        // Add the TableRow to the TableLayout
        table.addView(row);

此代码段位于视图的onCreate事件中。

感谢您尝试提供帮助。

2 个答案:

答案 0 :(得分:1)

我发现了这个问题:(我确实感到愚蠢);我已按以下方式引用布局

//pie chart
RelativeLayout layout = (RelativeLayout) findViewById(R.id.chart);

我应该

//pie chart
 RelativeLayout layout = (RelativeLayout)row.findViewById(R.id.chart);

当我添加row.findViewByID时,一切正常

伍德树木问题很抱歉浪费你宝贵的时间。

答案 1 :(得分:0)

我建议你先尝试一种更简单的方法。尝试使用LinearLayout并查看是否有效,然后尝试使用TableLayout。要在LinearLayout中嵌入AChartEngine,请参阅this