Я пытаюсь поставить метку на xAxis внутри mpandroidchart в линейном графике, но каждый раз получаю сообщение об ошибке.
Где я ошибся?
Или я должен следовать другому подходу?
Если мне нужно, то что это?
public class OpdIpdAnalysis extends AppCompatActivity{
ApiService service;
TokenManager tokenManager;
Call<ModelResponse> call;
private ListView mListView;
//GraphView
private LineChart mLineChart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_opd_ipd_analysis);
//GraphView casting
mLineChart =(LineChart) findViewById(R.id.lineChart);
mLineChart.setTouchEnabled(true);
mLineChart.setPinchZoom(true);
//code for retrofit call
call = service.getAllOpdIpdData();
call.enqueue(new Callback<ModelResponse>() {
@Override
public void onResponse(Call<ModelResponse> call, Response<ModelResponse> response) {
myProgressBar.setVisibility(View.GONE);
if (response.isSuccessful() && response.body() != null) {
updatUI(response.body().getOpdIpdComparison());
List<Entry> entries1 = new ArrayList<>();
List<Entry> entries2 = new ArrayList<>();
//final List<String> xLabel = new ArrayList<>();
for (OpdIpdModel opdIpdModel : response.body().getOpdIpdComparison()){
entries1.add(new Entry(opdIpdModel.getMonth(),opdIpdModel.getoPD()));
entries2.add(new Entry(opdIpdModel.getMonth(), opdIpdModel.getiPD()));
//xLabel.add(opdIpdModel.getMonthString());
String[] xLabel = {opdIpdModel.getMonthString()};
XAxis xAxis = mLineChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1);
xAxis.setAxisMinimum(1);
xAxis.setCenterAxisLabels(true);
xAxis.setValueFormatter(new MyXAxisValueFormatter(xLabel));
}
LineDataSet lineDataSet1 = new LineDataSet(entries1, "OpdLine");
lineDataSet1.setDrawCircles(false);
lineDataSet1.setLineWidth(4f);
lineDataSet1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
lineDataSet1.setColor(randomAndroidColor1);
LineDataSet lineDataSet2 = new LineDataSet(entries2, "IpdLine");
lineDataSet2.setDrawCircles(false);
lineDataSet2.setLineWidth(4f);
lineDataSet2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
lineDataSet2.setColor(randomAndroidColor2);
//add the data
List<ILineDataSet> iLineDataSets = new ArrayList<>();
iLineDataSets.add(lineDataSet1);
iLineDataSets.add(lineDataSet2);
LineData lineData = new LineData(iLineDataSets);
mLineChart.setData(lineData);
mLineChart.setVisibility(View.VISIBLE);
mLineChart.animateXY(1500,1500);
mLineChart.setVisibleXRangeMaximum(10);
//mLineChart.setXAxisRenderer(new CustomXAxisRenderer(mLineChart.getViewPortHandler(),mLineChart.getTransformer(YAxis.AxisDependency.LEFT)));
Description description = new Description();
description.setText("Growth rate per month");
description.setTextSize(12);
description.setTextColor(Color.BLACK);
mLineChart.setDescription(description);
mLineChart.invalidate();
}
}
}
Мое приложение каждый раз падает,
И я получаю сообщение об ошибке:
java.lang.ArrayIndexOutOfBoundsException: length = 4;index = 4
Теперь, как я могу решить эту проблему и установить метку, как я ожидаю?