如何在Android中的微调器项目上重新创建饼图(AChartEngine)?

时间:2014-09-02 06:50:48

标签: android achartengine pie-chart

使用 AChartEngine 库在我的项目的PieChart视图中显示数据。最初我创建了数据集渲染查看图表工厂来创建PieChart并且工作正常。例如 PieChart for Gender

OnCreate(){
   malecount = 3; 
   femalecount = 1;

    createpiechart(); // Creating PieChart initially
}

此代码工作正常。 PieChart与男性&女性有2种不同的颜色,提到静态。  现在我为过滤器添加Spinner,为该Spinner添加事件OnItemSelectedListener

String selectedItem = parent.getItemAtPosition(position).toString();
if(selectedItem.equals("Last Week"))
{
    malecount = 2; femalecount = 1;  // clear existing values from temp memory and add new values
    mSeries.clear(); // clear the dataset

    createpiechart(); // recreate piechart
}

创建饼图方法再次执行与以前相同的代码。

private void createpiechart() {

    VALUES = new int[] { malecount, femalecount };
    mRenderer.setChartTitle("Gender");
    mRenderer.setChartTitleTextSize(20);
    mRenderer.setLabelsColor(0xff000000); // Black color
    mRenderer.setLabelsTextSize(15);
    mRenderer.setLegendTextSize(15);
    mRenderer.setMargins(new int[] { 20, 30, 15, 0 });
    mRenderer.setZoomButtonsVisible(true);
    mRenderer.setStartAngle(90);


    for (int i = 0; i < VALUES.length; i++) {

        mSeries.add(NAME_LIST[i] + " " + VALUES[i], VALUES[i]);
        SimpleSeriesRenderer renderer = new SimpleSeriesRenderer();
        renderer.setColor(COLORS[(mSeries.getItemCount() - 1)
                                 % COLORS.length]);
        mRenderer.addSeriesRenderer(renderer);
    }

    if (mChartView != null) {
        mChartView.repaint();
    }

    if (mChartView == null) {
        LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
        mChartView = ChartFactory.getPieChartView(this, mSeries, mRenderer);
        mRenderer.setClickEnabled(true);
        mRenderer.setSelectableBuffer(10);

        mChartView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // nothing
            }
        });
        layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
    else {
        mChartView.repaint();
    }
}

执行相同的代码绿色和蓝色的男性&amp;底部的女性变为白色,在显示之前我需要相同的颜色。请查看下面的图片,并帮我了解如何更改该颜色或该代码有什么问题?

enter image description here

1 个答案:

答案 0 :(得分:2)

只需清除数据集和渲染器,然后传递新值。

清除数据集

int size = dataset.getSeriesCount();
for (int i = 0; i < size; i++) {
dataset.removeSeries(0);
}

清除渲染器renderer.removeAllRenderers();