I'm trying to implement a code where i can switch charts with dialog. My charts are dynamic charts and i use thread to fill up them with data (random numbers). I will have 3 type of chart: point, bar, and linechart. First of all i need to figure out how to switch charts. In the onCreate method i start a line chart and it works. Now if i try to clear the Layout and start the chart again it fails. I dont't know the sollution. I paste here the original code.
public class ChartActivity extends Activity {
private GraphicalView view;
Thread thread;
private TimeSeries dataset = new TimeSeries("");
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
private XYSeriesRenderer renderer = new XYSeriesRenderer();
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
private CharSequence [] dialog_list = {"Line chart", "Bar chart", "Point chart"};
private LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
layout = (LinearLayout) findViewById(R.id.chart);
Graph();
Button switchButton = (Button) findViewById(R.id.switchChart);
switchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ChartActivity.this.showDialog(1);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id){
default:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose option:").setItems(dialog_list, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//TODO
}
});
dialog = builder.create();
break;
}
return dialog;
}
public void Graph(){
thread = new Thread(new Runnable(){
public void run(){
for(int i=0;i<1000;i++){
Random random = new Random();
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
double randomNumber = random.nextInt(10);
dataset.add((double) i, randomNumber);
mRenderer.setXAxisMin(i-10);
mRenderer.setXAxisMax(-Double.MAX_VALUE);
mRenderer.setYAxisMax(20);
mRenderer.setYAxisMin(-10);
view.repaint();
}
}
}, "thread");
thread.start();
mDataset.addSeries(dataset);
mRenderer.addSeriesRenderer(renderer);
}
@Override
protected void onResume() {
super.onResume();
if (view == null) {
//LinearLayout layout = (LinearLayout) findViewById(R.id.chart);
view = ChartFactory.getLineChartView(this, mDataset, mRenderer);
layout.addView(view);
} else {
view.repaint();
}
}
}
And here is my layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F6F6F6" >
<LinearLayout
android:id="@+id/chart"
android:layout_width="380dp"
android:layout_height="300dp"
android:layout_alignLeft="@+id/switchChart"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/backButton"
android:layout_marginTop="30dp"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
All in all, how can i switch charts in my code, included deleting Layout, stop thread if necessary or a new function.
Thanks
0 comments:
Post a Comment