Reputation: 1073
I am new to Android and I have developed the following code to display a bar chart for the top 10 travel destinations.
My question is that I need to refresh the activity so that i draws a new chart everytime I refresh. Please post any links where i may learn how to refresh it. I have searched all over the internet but could not find a suitable tutorial.
public class ChartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XYMultipleSeriesRenderer renderer = getBarDemoRenderer();
setChartSettings(renderer);
Intent intent = ChartFactory.getBarChartIntent(this, getBarDemoDataset(), renderer, Type.DEFAULT);
startActivity(intent);
}
public void createIntent()
{
// return ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
public XYMultipleSeriesRenderer getBarDemoRenderer() {
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
renderer.setMargins(new int[] {10, 20, 0, 0});
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(Color.BLUE);
renderer.addSeriesRenderer(r);
r = new SimpleSeriesRenderer();
r.setColor(Color.GREEN);
renderer.addSeriesRenderer(r);
return renderer;
}
private XYMultipleSeriesDataset getBarDemoDataset() {
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
final int nr = 5;
Random r = new Random();
int SERIES_NR = 2;
for (int i = 0; i < SERIES_NR; i++) {
CategorySeries series = new CategorySeries("Top 10 Destinations " );
for (int k = 0; k < nr; k++) {
series.add(800 + r.nextInt() % 100);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
}
private void setChartSettings(XYMultipleSeriesRenderer renderer) {
renderer.setChartTitle("Top 10 Destinations Chart");
renderer.setXTitle("Travel Destinations Around the World");
renderer.setYTitle("Number of Visitors");
renderer.setXAxisMin(0);
renderer.setXAxisMax(6);
renderer.setYAxisMin(0);
renderer.setYAxisMax(1000);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_chart, menu);
return true;
}
}
Upvotes: 0
Views: 360
Reputation: 28737
For more control over the chart view it's better to create a GraphicalView
instead of creating an intent for a GraphicalActivity
:
GraphicalView graphicalView = getBarChartView(this, getBarDemoDataset(), renderer, Type.DEFAULT);
Add this view to the view heirarchy of your activity. Then to show new data, first modify the dataset and then schedule a repaint using:
graphicalView.repaint()
Upvotes: 1