java - achartengine : how to repaint / redraw chart -


i want repaint chart everytime choose 1 of m adapter, first time graph drawn looks perfect, when go choose 1 , come looks draws 2 times same graph.

this source code :

  public class mainactivity extends activity {      private button btnconnect;     private spinner spntime;      private string[] durationdata = new string[]{         "pilih durasi",         "1 minggu",          "1 bulan",          "3 bulan",         "9 bulan",          "12 bulan"     };      int period = 0;      private linearlayout lnchart;      private progressdialog dialog;      public string baseurl = "http://www.abcj.com/i=";      private arraylist<dataitem> listdata;       //chart variables      public static final string type = "type";      private xymultipleseriesdataset mdataset = new xymultipleseriesdataset();      private xymultipleseriesrenderer mrenderer = new xymultipleseriesrenderer();      private xyseries mcurrentseries;      private xyseriesrenderer mcurrentrenderer;      private string mdateformat;      private graphicalview mchartview;      private int index = 0;     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          btnconnect = (button)findviewbyid(r.id.btndownloadchartdata);         spntime = (spinner)findviewbyid(r.id.spoptduration);          listdata = new arraylist<dataitem>();          //chart initiation          mrenderer.setapplybackgroundcolor(true);         mrenderer.setbackgroundcolor(color.argb(100, 50, 50, 50));         mrenderer.setaxistitletextsize(16);         mrenderer.setcharttitletextsize(20);         mrenderer.setlabelstextsize(15);         mrenderer.setlegendtextsize(15);         mrenderer.setmargins(new int[] { 20, 30, 15, 0 });         mrenderer.setzoombuttonsvisible(true);         mrenderer.setpointsize(10);          btnconnect.setonclicklistener(new onclicklistener() {              @override             public void onclick(view arg0) {                 // todo auto-generated method stub           arrayadapter<string> adapter = new arrayadapter<string>(mainactivity.this,                  android.r.layout.simple_dropdown_item_1line, durationdata);          spntime.setadapter(adapter);          spntime.setonitemselectedlistener(new onitemselectedlistener() {              @override             public void onitemselected(adapterview<?> arg0, view arg1,                     int arg2, long arg3) {                 // todo auto-generated method stub                 switch (arg2+1) {                     case 0:                     break;                     case 1:                         period = 7;                     break;                      case 2:                         period = 30;                     break;                      case 3:                         period = 90;                     break;                      case 4:                         period = 180;                     break;                      case 5:                         period = 360;                     break;                 default:                     break;                 }                  new loaddata(baseurl+period).execute();             }              @override             public void onnothingselected(adapterview<?> arg0) {                 // todo auto-generated method stub              }         });          } });      }      @suppresslint("showtoast")     @override     protected void onresume() {         // todo auto-generated method stub         super.onresume();          if (mchartview == null) {              lnchart = (linearlayout) findviewbyid(r.id.chart);               mchartview = chartfactory.getlinechartview(this, mdataset, mrenderer);               mrenderer.setclickenabled(true);               mrenderer.setselectablebuffer(100);               mchartview.setonclicklistener(new view.onclicklistener() {                 @override                 public void onclick(view v) {                   seriesselection seriesselection = mchartview.getcurrentseriesandpoint();                   double[] xy = mchartview.torealpoint(0);                   if (seriesselection == null) {                     toast.maketext(mainactivity.this, "no chart element clicked", toast.length_short)                         .show();                   }                  }               });               mchartview.setonlongclicklistener(new view.onlongclicklistener() {                 @suppresslint("showtoast")                 @override                 public boolean onlongclick(view v) {                   seriesselection seriesselection = mchartview.getcurrentseriesandpoint();                   if (seriesselection == null) {                     toast.maketext(mainactivity.this, "no chart element long pressed",                         toast.length_short);                     return false; // no chart element long pressed, let                     // else handle event                   } else {                     toast.maketext(mainactivity.this, "chart element in series index "                         + seriesselection.getseriesindex() + " data point index "                         + seriesselection.getpointindex() + " long pressed", toast.length_short);                     return true; // element long pressed - event has been                     // handled                   }                 }               });               mchartview.addzoomlistener(new zoomlistener() {                 public void zoomapplied(zoomevent e) {                   string type = "out";                   if (e.iszoomin()) {                     type = "in";                   }                   system.out.println("zoom " + type + " rate " + e.getzoomrate());                 }                  public void zoomreset() {                   system.out.println("reset");                 }               }, true, true);               mchartview.addpanlistener(new panlistener() {                 public void panapplied() {                   system.out.println("new x range=[" + mrenderer.getxaxismin() + ", " + mrenderer.getxaxismax()                       + "], y range=[" + mrenderer.getyaxismax() + ", " + mrenderer.getyaxismax() + "]");                 }               });               lnchart.removeallviews();               lnchart.addview(mchartview, new layoutparams(layoutparams.fill_parent,                   layoutparams.fill_parent));             } else {               mchartview.repaint();             }     }      private class loaddata extends asynctask<void, void, string>{          string url = "";          public loaddata(string url) {             // todo auto-generated constructor stub             this.url = url;         }          @override         protected void onpreexecute() {             // todo auto-generated method stub             super.onpreexecute();              dialog = progressdialog.show(mainactivity.this, "", "please wait");         }          @override         protected string doinbackground(void... params) {             // todo auto-generated method stub             string result = "";             try {                 result = connection.get(url);             } catch (exception e) {                 // todo: handle exception                 result = "";                 log.d("test chart", e.getmessage());             }              return result;         }          @override         protected void onpostexecute(string result) {             // todo auto-generated method stub             super.onpostexecute(result);              fetchresponse(result.replace("\n", "").trim());              dialog.dismiss();         }      }      private void fetchresponse(string result) {         // todo auto-generated method stub         if (!result.equals("")) {             try {                 jsonarray jsonarray = new jsonarray(result);                 dataitem item = null;                  (int = 1; < jsonarray.length(); i++) {                      jsonobject jsonobject = jsonarray.getjsonobject(i);                      item = new dataitem(jsonobject.optstring("lji_invest"),                              jsonobject.optdouble("persen_hmin1"),                              jsonobject.optdouble("lnu_nilai"),                              jsonobject.optdouble("selisih"),                              jsonobject.optstring("lji_id"),                              jsonobject.optstring("tanggal"));                      listdata.add(item);                 }                  renderchart(listdata);              } catch (exception e) {                 log.d("test chart", e.getmessage());             }         }        }      private void renderchart(arraylist<dataitem> listdata) {         // todo auto-generated method stub          string seriestitle = "series data";         xyseries series = new xyseries(seriestitle);         mdataset.addseries(series);         mcurrentseries = series;         xyseriesrenderer renderer = new xyseriesrenderer();         mrenderer.addseriesrenderer(renderer);          renderer.setfillpoints(true);          mcurrentrenderer = renderer;          (int = 0; < listdata.size(); i++) {             mcurrentseries.add(listdata.get(i).getinunilai(),                      listdata.get(i).getpersenhmint1());         }          if (mchartview != null) {               mchartview.repaint();             }      }      @override       protected void onrestoreinstancestate(bundle savedstate) {         super.onrestoreinstancestate(savedstate);         mdataset = (xymultipleseriesdataset) savedstate.getserializable("dataset");         mrenderer = (xymultipleseriesrenderer) savedstate.getserializable("renderer");         mcurrentseries = (xyseries) savedstate.getserializable("current_series");         mcurrentrenderer = (xyseriesrenderer) savedstate.getserializable("current_renderer");         mdateformat = savedstate.getstring("date_format");       }        @override       protected void onsaveinstancestate(bundle outstate) {         super.onsaveinstancestate(outstate);         outstate.putserializable("dataset", mdataset);         outstate.putserializable("renderer", mrenderer);         outstate.putserializable("current_series", mcurrentseries);         outstate.putserializable("current_renderer", mcurrentrenderer);         outstate.putstring("date_format", mdateformat);       } 

so how repaint chart? hope can show me fault, , tell me way fix it

use chartview.removeview(graphical_view)

before setting chart view new values, followed use 'graphical_view.repaint()' inorder set new value layout

however use multirenderer.setinscroll(true);


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -