AChartEngine не отображается график с временем на оси X
Использую AChartEngine для отображения графика. Но когда в TimeSeries добавляю больше двух значение график не отображается и приложение вылетает с ошибкой
java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
at java.util.ArrayList.get(ArrayList.java:437)
at org.achartengine.util.IndexXYMap.getYByIndex(IndexXYMap.java:86)
at org.achartengine.model.XYSeries.getY(XYSeries.java:226)
at org.achartengine.chart.XYChart.drawChartValuesText(XYChart.java:663)
at org.achartengine.chart.XYChart.drawSeries(XYChart.java:585)
at org.achartengine.chart.XYChart.draw(XYChart.java:351)
at org.achartengine.GraphicalView.onDraw(GraphicalView.java:181)
at android.view.View.draw(View.java:20250)
at android.view.View.updateDisplayListIfDirty(View.java:19125)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.updateDisplayListIfDirty(View.java:19116)
at android.view.View.draw(View.java:19978)
at android.view.ViewGroup.drawChild(ViewGroup.java:4341)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4120)
at android.view.View.draw(View.java:20253)
at com.android.internal.policy.DecorView.draw(DecorView.java:930)
at android.view.View.updateDisplayListIfDirty(View.java:19125)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:801)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3338)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3135)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2504)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1479)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7258)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1050)
at android.view.Choreographer.doCallbacks(Choreographer.java:862)
at android.view.Choreographer.doFrame(Choreographer.java:797)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1036)
at android.os.Handler.handleCallback(Handler.java:874)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:198)
at android.app.ActivityThread.main(ActivityThread.java:6729)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)
График отображаю так
JSONObject jsonResponse = new JSONObject(response);
double[] temp1 = new double[5];
Date[] dt = new Date[5];
@SuppressLint("SimpleDateFormat") DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
for (int i = 0; i < 5; i++) {
dt[i] = dateFormat.parse(jsonResponse.getString("d1" + (i + 1)));
temp1[i] = jsonResponse.getDouble("t1" + (i + 1));
}
TimeSeries visitsSeries = new TimeSeries("Visits");
for(int i = 0; i < 5; i++) {
visitsSeries.add(dt[i], temp1[i]);
}
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
dataset.addSeries(visitsSeries);
XYSeriesRenderer visitsRenderer = new XYSeriesRenderer();
visitsRenderer.setColor(Color.WHITE);
visitsRenderer.setPointStyle(PointStyle.CIRCLE);
visitsRenderer.setFillPoints(true);
visitsRenderer.setLineWidth(2);
visitsRenderer.setDisplayChartValues(true);
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.setZoomButtonsVisible(false);
multiRenderer.addSeriesRenderer(visitsRenderer);
LinearLayout chartContainer = (LinearLayout) findViewById(R.id.graphTemp);
graphTemp = (GraphicalView) ChartFactory.getTimeChartView(getBaseContext(), dataset, multiRenderer,"dd-MMM-yyyy");
multiRenderer.setClickEnabled(false);
multiRenderer.setSelectableBuffer(10);
chartContainer.addView(graphTemp);