i trying implement barchart mpandroidchart. when call setdata() method barchart, following error:
java.lang.nullpointerexception: attempt invoke virtual method 'int java.lang.string.length()' on null object reference
the crash occuring @ following place: com.github.mikephil.charting.components.yaxis.getlongestlabel(yaxis.java:333)
i literally copied sample code. going on? using graph inside listview
static class dailygoalviewholder { public barchart mchart; } priate dailygoalviewholder mdailygoalviewholder; @override private void getview(int position, view convertview, viewgroup parent) { layoutinflater inflater = (layoutinflater) mcontext.getsystemservice(context.layout_inflater_service); convertview = inflater.inflate(r.layout.layout_dashboard_daily_goal, parent, false); mdailygoalviewholder = new dailygoalviewholder(); mdailygoalviewholder.mchart = (barchart) convertview.findviewbyid(r.id.chart); mdailygoalviewholder.mchart.setdrawbarshadow(false); mdailygoalviewholder.mchart.setdrawvalueabovebar(true); mdailygoalviewholder.mchart.setdescription(""); mdailygoalviewholder.mchart.setmaxvisiblevaluecount(60); mdailygoalviewholder.mchart.setpinchzoom(false); mdailygoalviewholder.mchart.setdrawgridbackground(false); xaxis xaxis = mdailygoalviewholder.mchart.getxaxis(); xaxis.setposition(xaxis.xaxisposition.bottom); xaxis.setdrawgridlines(false); xaxis.setspacebetweenlabels(2); valueformatter custom = new chartvalueformatter(); yaxis leftaxis = mdailygoalviewholder.mchart.getaxisleft(); leftaxis.setlabelcount(8); leftaxis.setvalueformatter(custom); leftaxis.setposition(yaxis.yaxislabelposition.outside_chart); leftaxis.setspacetop(15f); legend l = mdailygoalviewholder.mchart.getlegend(); l.setposition(legend.legendposition.below_chart_left); l.setform(legend.legendform.square); l.setformsize(9f); l.settextsize(11f); l.setxentryspace(4f); setdataforchart(12, 50); } private void setdata(int count, float range) { arraylist<string> xvals = new arraylist<string>(); (int = 0; < count; i++) { xvals.add("test"); } arraylist<barentry> yvals1 = new arraylist<barentry>(); (int = 0; < count; i++) { float mult = (range + 1); float val = (float) (math.random() * mult); yvals1.add(new barentry(val, i)); } bardataset set1 = new bardataset(yvals1, "dataset"); set1.setbarspacepercent(35f); arraylist<bardataset> datasets = new arraylist<bardataset>(); datasets.add(set1); bardata data = new bardata(xvals, datasets); data.setvaluetextsize(10f); data.setvaluetypeface(mtf); mdailygoalviewholder.mchart.setdata(data); } in separate file, chartvaluefomatter class follows:
import com.github.mikephil.charting.utils.valueformatter; import java.text.decimalformat; public class chartvalueformatter implements valueformatter { private decimalformat mformat; public chartvalueformatter() { mformat = new decimalformat("###,###,###,##0.0"); } @override public string getformattedvalue(float value) { return null; } } gradle --> compile 'com.github.philjay:mpandroidchart:v2.1.0'
the reason crash this:
@override public string getformattedvalue(float value) { return null; } you cannot return null valueformatter. instead, if don't want display on axis, call setdrawlabels(false) or return "" getformattedvalue(...) method.
Comments
Post a Comment