Android : Achartengine chart switch in Layout

on Sunday, August 3, 2014


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