У меня есть небольшая проблема с MPAndroidChart. В приведенном выше коде я получаю ошибку, которая заставляет меня сходить с ума на 3 дня. Im получение ошибки, когда я пытаюсь добавить запись в массив barEntry, и я не знаю почему.Ошибка при попытке добавить значение в Array of BarEntry
private void retrive(){
NoSQL.with(this).using(Float.class)
.bucketId("MyMarket")
.entityId("Chart")
.retrieve(new RetrievalCallback<Float>() {
@Override
public void retrievedResults(List<NoSQLEntity<Float>> noSQLEntities) {
for(int i = 0; i < noSQLEntities.size(); i++) {
float item = noSQLEntities.get(i).getData();
BarEntry entry = new BarEntry(i, item);
barEntries.add(entry);
}
}
});
BarDataSet barDataSet = new BarDataSet(barEntries, "Compras");
BarData theData = new BarData(barDataSet);
theData.setBarWidth(0.9f);
barChart.setData(theData);
barChart.setTouchEnabled(true);
barChart.setDragEnabled(true);
barChart.setScaleEnabled(true);
barChart.setDescription("");
barChart.animateY(2700);
barChart.setData(theData);
barChart.setFitBars(true);
XAxis xAxis = barChart.getXAxis();
xAxis.setDrawGridLines(false);
YAxis right = barChart.getAxisRight();
right.setDrawGridLines(false);
YAxis left = barChart.getAxisLeft();
left.setDrawGridLines(false);
barChart.invalidate();
}
В этой строке:
BarEntry entry = new BarEntry(i, item);
меня уверен добавляется значение, но программа держать дать мне эту ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.stark.mymarket, PID: 6404
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.github.mikephil.charting.buffer.BarBuffer.addBar(BarBuffer.java:37)
at com.github.mikephil.charting.buffer.BarBuffer.feed(BarBuffer.java:80)
at com.github.mikephil.charting.renderer.BarChartRenderer.drawDataSet(BarChartRenderer.java:103)
at com.github.mikephil.charting.renderer.BarChartRenderer.drawData(BarChartRenderer.java:78)
at com.github.mikephil.charting.charts.BarLineChartBase.onDraw(BarLineChartBase.java:243)
at android.view.View.draw(View.java:16178)
at android.view.View.updateDisplayListIfDirty(View.java:15174)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.updateDisplayListIfDirty(View.java:15169)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.updateDisplayListIfDirty(View.java:15169)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.updateDisplayListIfDirty(View.java:15169)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.updateDisplayListIfDirty(View.java:15169)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.updateDisplayListIfDirty(View.java:15169)
at android.view.View.draw(View.java:15948)
at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
at android.view.View.draw(View.java:16181)
at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690)
at android.view.View.updateDisplayListIfDirty(View.java:15174)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Убедитесь, что вы не используете бета-версию MPAndroidChart. По http://stackoverflow.com/questions/39736352/mpandroidchart-y-axis-scale-gets-updated-but-lines-are-not/39813637#39813637 могут быть ошибки – Alex