繁体   English   中英

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

[英]How can I recreate piechart (AChartEngine) on spinner item click in Android?

现在用AChartEngine库来显示数据的PieChart视图在我的项目。 最初,我创建了DatasetRenderViewChart Factory来创建PieChart及其正常工作。 例如,性别的PieChart

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
}

在该create 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();
    }
}

在执行了相同的代码后,底部的“男性和女性”的绿色和蓝色变为白色 ,在显示之前我需要相同的颜色。 检查下面的这张图片,并帮助我如何更改颜色,或者此代码有什么问题?

在此处输入图片说明

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

清除数据集

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

清除Renderer renderer.removeAllRenderers();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM