![](/img/trans.png)
[英]Piechart Click option in android using aChartEngine api
[英]How can I recreate piechart (AChartEngine) on spinner item click in Android?
现在用AChartEngine库来显示数据的PieChart
视图在我的项目。 最初,我创建了Dataset , Render , View和Chart 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.