我正在显示一个饼图,其中包含从数据库中获取的数据。数据库查询具有Spinner选择的年份的WHERE
子句。在Fragment的开头一切正常,但是如果你不用Spinner方法改变年份就称为grafico(anno)
。我尝试使用onResume ()
,但它不起作用,你有一些建议吗?感谢
private void grafico(String anno){
// Pie Chart Section Names
String[] code = new String[] {"A", "B"};
// Color of each Pie Chart Sections
int[] colors = { Color.rgb(153,204,0), Color.rgb(255,68,68)};
SQLiteDatabase db = new ResgistroSpeseHelper(getActivity()).getReadableDatabase();
String sql = "SELECT SUM(a), SUM(b) FROM table WHERE data LIKE '"+anno+"%'";
Cursor c = db.rawQuery(sql, null);
while (c.moveToNext()){
double a_ = c.getDouble(0);
double b_ = c.getDouble(1);
double somma = b_ + a_;
double perc_1 = (a_ / somma) * 100;
double perc_2 = (b_ / somma) * 100;
// Pie Chart Section Value
double[] distribution = { perc_2, perc_1 } ;
// Instantiating CategorySeries to plot Pie Chart
CategorySeries distributionSeries = new CategorySeries(" Android version distribution as on October 1, 2012");
for(
int i=0 ;
i < distribution.length;
i++){
// Adding a slice with its values and name to the Pie Chart
distributionSeries.add(code[i], distribution[i]);
//distributionSeries.add(perc_entrate);
}
// Instantiating a renderer for the Pie Chart
DefaultRenderer defaultRenderer = new DefaultRenderer();
for(int i = 0 ;i<distribution.length;i++){
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
seriesRenderer.setColor(colors[i]);
seriesRenderer.setDisplayChartValues(true);
// Adding a renderer for a slice
defaultRenderer.addSeriesRenderer(seriesRenderer);
}
defaultRenderer.setLabelsTextSize (12);
defaultRenderer.setLegendTextSize(22);
defaultRenderer.setZoomButtonsVisible(true);
// Getting PieChartView to add to the custom layout
mChartView = ChartFactory.getPieChartView(getActivity(),distributionSeries, defaultRenderer);
// Getting a reference to view group linear layout chart_container
// Adding the pie chart to the custom layout
chartContainer.addView(mChartView);
}
c.close();
db.close();
}
//
@Override
public void onResume(){
years = ottieniAnni();
SpinnerAdapter adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item, years);
yearSelector.setAdapter(adapter);
yearSelector.setSelection(0);
yearSelector.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
String anno = years.get(position);
grafico(anno);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
return;
}
});
super.onResume();
}