Click here to Skip to main content
15,885,852 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Am using AChartEngine library to show my reports in BarChart. I need to reset the values that comes from database in Button click. So I cleared values, Dataset, Renderer. Now if I run my app on device and barchart is displayed successfully and when click button barchart is disabled !! whats wrong with my code ?

Java
qry1="SELECT * FROM TableName where Filter='Yes'";
qry2="SELECT * FROM TableName where Filter='No'";
try {
    Cursor c = database.rawQuery(qry1, null);
    if (c.moveToFirst()) {
    do {
        String count = c.getString(c.getColumnIndex("Id"));
        System.err.println(count);
        yescount = yescount + 1;

        } while (c.moveToNext());
        }
        System.err.println("BarChart YesCount" + yescount);
        } catch (Exception e) {

        Log.d("BarChart-Yes", "Unable to get Record Count "+ e.getMessage().toString());
        }

try {   
    Cursor c = database.rawQuery(qry2, null);
    if (c.moveToFirst()) {
    do {
        String count = c.getString(c.getColumnIndex("Id"));
        System.err.println(count);
        nocount = nocount + 1;

        } while (c.moveToNext());
        }
        System.err.println("BarChart Nocount" + nocount);
    } catch (Exception e) {

    Log.d("BarChart-No", "Unable to get Record Count "+ e.getMessage().toString());
    }

yesc = new int[] { yescount };
noc = new int[] { nocount };

seriesy = new CategorySeries("Yes");
for(int i=0; i < yesc.length; i++){
seriesy.add("Bar"+(i+1),yesc[i]);
}

seriesn = new CategorySeries("No");
for(int i=0; i < noc.length; i++){
seriesn.add("Bar"+(i+1),noc[i]);
}

dataSet = new XYMultipleSeriesDataset();  // collection of series under one object.,there could any
dataSet.addSeries(seriesy.toXYSeries());                            // number of series
dataSet.addSeries(seriesn.toXYSeries());   


renderery = new XYSeriesRenderer();     // one renderer for one series
renderery.setColor(Color.BLUE);
renderery.setDisplayChartValues(true);
renderery.setLineWidth(20);

renderern = new XYSeriesRenderer();     // one renderer for one series
renderern.setColor(Color.GREEN);
renderern.setDisplayChartValues(true);
renderern.setLineWidth(30);

mRenderer = new XYMultipleSeriesRenderer();   // collection multiple values for one renderer or series
mRenderer.addSeriesRenderer(renderery);
mRenderer.addSeriesRenderer(renderern);
mRenderer.setChartTitle("Active Warming");
mRenderer.setYTitle("No of Reports");
mRenderer.setZoomButtonsVisible(true);    
mRenderer.setShowLegend(true);
mRenderer.setShowGridX(true);      // this will show the grid in  graph
mRenderer.setBarSpacing(.5);   // adding spacing between the line or stacks
mRenderer.setApplyBackgroundColor(false);
mRenderer.setMarginsColor(Color.rgb(229,250,251));
mRenderer.setLabelsColor(Color.BLACK);
mRenderer.setAxesColor(Color.BLACK);
mRenderer.setXAxisMin(0);
mRenderer.setYAxisMin(0); // line only start axis from zero else it open from min
mRenderer.setXAxisMax(2);   
mRenderer.setXLabels(0);
mRenderer.setBarWidth(18);
mRenderer.setPanEnabled(true, true);    // will fix the chart position

layout=(LinearLayout)findViewById(R.id.barchartaw);
mChartView=ChartFactory.getBarChartView(getApplicationContext(), dataSet, mRenderer, org.achartengine.chart.BarChart.Type.DEFAULT);
layout.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

This above code is working fine. now in side button click i cleared integer values, cleared dataset and then cleared Renderer. Then again I set another query to get data from database and call this same code again but this time the BarChart get disappears.
Java
yesc=null; noc=null; Integer Array
yescount = 0; nocount = 0;  // Integer - clear value from temp and add new one
dataSet.clear(); // clear dataset 
mRenderer.removeAllRenderers();  // clear all renders and create new

Can any one able to help me ? Thanks in advance.
Posted
Updated 29-Sep-14 1:52am
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900