android - AChartEngine Annotations on a TimeChart not working -


i having problem getting annotations show on timechart. have graphutil class has following static method returns graphicalview:

public static graphicalview getgraph(activity activity, xymultipleseriesrenderer graphrenderer, xymultipleseriesdataset dataset, timeseries series, xyseriesrenderer seriesrenderer) {     dataset.addseries(series);     graphrenderer.addseriesrenderer(seriesrenderer);     series.addannotation("hi", 100, 100);     return chartfactory.gettimechartview(activity, dataset, graphrenderer, "m/d"); } 

it being called fragment, method this:

private void initflexiongraph() {     mflexionseries = getflexiondata();     mflexiondataset = new xymultipleseriesdataset();     mflexiongraphrenderer = new xymultipleseriesrenderer();     mflexionseriesrenderer = new xyseriesrenderer();      mflexiongraph = graphutil.getgraph(getactivity(), mflexiongraphrenderer, mflexiondataset, mflexionseries, mflexionseriesrenderer);     ((linearlayout) this.getview().findviewbyid(r.id.flexion_graph)).addview(mflexiongraph); } 

here getflexiondata() method:

private timeseries getflexiondata() {     int count = cursor.getcount();     list<date> dates = new arraylist<date>(count);     list<double> flexions = new arraylist<double>(count);     if (cursor.movetofirst()) {         {              dates.add(dateutil.getbeginningcalendartimeofdate(cursor.getlong(cursor.getcolumnindex("date"))).gettime());              flexions.add(cursor.getdouble(cursor.getcolumnindex("best_flexion")));         } while (cursor.movetonext());          timeseries flexionseries = new timeseries();         (int = 0; < dates.size(); i++) {             flexionseries.add(dates.get(i), flexions.get(i));         }     }     return flexionseries; } 

the rest of graph shows great, no annotations anywhere. set properties mflexionseriesrenderer , mflexiongraphrenderer, omitted them here. can post them if think there problem there.

when go different tab , come back, indexoutofboundsexception:

java.lang.indexoutofboundsexception: invalid index 1, size 1 @ java.util.arraylist.throwindexoutofboundsexception(arraylist.java:255) @ java.util.arraylist.get(arraylist.java:308) @ org.achartengine.util.indexxymap.getxbyindex(indexxymap.java:76) @ org.achartengine.model.xyseries.getannotationx(xyseries.java:260) @ org.achartengine.chart.xychart.draw(xychart.java:307) @ org.achartengine.graphicalview.ondraw(graphicalview.java:181) 

my onresume() method includes code (this isn't efficient way repaint, calling repaint() doesn't work me):

if (mflexiongraph == null) {     initflexiongraph(); } else {     mflexionseries = getflexiondata();     mflexiongraph = graphutil.getgraph(getactivity(), mflexiongraphrenderer, mflexiondataset, mflexionseries, mflexionseriesrenderer);     ((linearlayout) this.getview().findviewbyid(r.id.flexion_graph)).removeallviews();     ((linearlayout) this.getview().findviewbyid(r.id.flexion_graph)).addview(flexiongraph);     mflexiongraph.repaint(); } 

i'm not sure why annotation isn't showing (my linearlayout 300 x 300, string @ (100, 100) should appear). using achartengine-1.2.0 (downloaded nightly build on 3/24/2014). ideas?

try example

    private linearlayout chartlayout;     private graphicalview mchart;      @override     protected void oncreate(bundle savedinstancestate)     {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         showtimegraph();     }      private void showtimegraph()     {         chartlayout = (linearlayout) findviewbyid(r.id.graphholder);          xymultipleseriesdataset dataset1 = new xymultipleseriesdataset();          timeseries series1 = new timeseries("timeseries");         series1 = getflexiondata(); //      dataset1.addseries(0, series1);          double[] limits = new double[] { 0, 40, 0, 200 };         xymultipleseriesrenderer multirenderer = new xymultipleseriesrenderer();         multirenderer.setcharttitle("title");         multirenderer.setxtitle("x axis");         multirenderer.setytitle("y axis");         multirenderer.setylabelsalign(align.left);         multirenderer.setbarspacing(1);         multirenderer.setbarwidth(10);         multirenderer.setyaxismin(0);         multirenderer.setyaxismax(250);         multirenderer.setxaxismin(-1);         multirenderer.setxaxismax(10);         multirenderer.setlabelstextsize(15);         multirenderer.setlegendtextsize(20);         multirenderer.setaxistitletextsize(20);         multirenderer.setcharttitletextsize(20);         multirenderer.setlabelscolor(color.black);         multirenderer.setaxescolor(color.black);         multirenderer.setapplybackgroundcolor(true); //      multirenderer.setbackgroundcolor(color.transparent);         multirenderer.setmarginscolor(color.argb(0, 255, 255, 255));         multirenderer.setxlabelscolor(color.black);         multirenderer.setylabelscolor(0, color.black);         multirenderer.clearxtextlabels();         // multirenderer.setylabels(0); //remove units on y axis(the horizontal         // axis since graph has been rotated 90 degree)         // multirenderer.setxlabels(0);         multirenderer.setxlabelspadding(-10f); // no effect         // multirenderer.setylabelspadding(20f);         // multirenderer.setmargins(new int[]{90, 0, 90, 0}); //top, left, bottom,         // right.         multirenderer.setorientation(org.achartengine.renderer.xymultipleseriesrenderer.orientation.horizontal);         xyseriesrenderer incomerenderer = new xyseriesrenderer();         incomerenderer.setcolor(color.blue);         incomerenderer.setchartvaluestextsize(20);         incomerenderer.setfillpoints(true);         incomerenderer.setdisplaychartvalues(true);         incomerenderer.setchartvaluestextalign(align.center);  //      multirenderer.addseriesrenderer(incomerenderer);         // numberformat noformat = new decimalformat( "##0.#e0" );         multirenderer.setylabels(5);         // multirenderer.setylabelformat( noformat ,0);         multirenderer.setinscroll(true);          // multirenderer.setzoomenabled(false, false);         // multirenderer.setpanenabled(false, false);         multirenderer.setclickenabled(false);         multirenderer.setselectablebuffer(10);         string[] types = new string[] { barchart.type };          // setchartsettings(multirenderer);         // intent intent = chartfactory.getbarchartintent(context, dataset1,         // multirenderer, null);         // intent intent = chartfactory.getcombinedxychartintent(context, dataset,         // multirenderer, types, null);         // multirenderer.setorientation(orientation.vertical);         // mchart = (graphicalview) chartfactory.getbarchartview(context,         // getbardataset(),getbarrenderer() ,null);         // mchart = (graphicalview) chartfactory.getbarchartview(context, dataset1,         // multirenderer, null);          mchart = getgraph(this, multirenderer, dataset1,series1,incomerenderer); //      mchart = (graphicalview) chartfactory.gettimechartview(this, dataset1,multirenderer  , "m/d");// "m/d"          chartlayout.addview(mchart);     }       protected defaultrenderer buildcategoryrenderer(int[] colors) {         defaultrenderer renderer = new defaultrenderer();         renderer.setlabelstextsize(15);         renderer.setlegendtextsize(15);         renderer.setmargins(new int[] { 20, 30, 15, 0 });         (int color : colors) {           simpleseriesrenderer r = new simpleseriesrenderer();           r.setcolor(color);           renderer.addseriesrenderer(r);         }         return renderer;       }     public static graphicalview getgraph(activity activity, xymultipleseriesrenderer graphrenderer,             xymultipleseriesdataset dataset, timeseries series, xyseriesrenderer seriesrenderer)     {         dataset.addseries(series);         graphrenderer.addseriesrenderer(seriesrenderer);         seriesrenderer.setannotationscolor(color.black);         series.addannotation("this annotation", 4, 200);         return chartfactory.gettimechartview(activity, dataset, graphrenderer, "m/d");     }  private timeseries getflexiondata()     {         timeseries series1 = new timeseries("timeseries");         series1 = new timeseries("timeseries");          long value = new date().gettime() - 3 * timechart.day;         random rr = new random();         for(int = 0; < 5; i++)         {             series1.add( , 100 + rr.nextint() % 100);         }         return series1;     } 

Comments

Popular posts from this blog

user interface - How to replace the Python logo in a Tkinter-based Python GUI app? -

objective c - Greedy NSProgressIndicator Allocation -

how to set an OCR language in Google Drive -