I wanna format XAxis values from int to String (actually date) the problem is that formatter is not stopping when ArrayList size is reached and I get out of array range exception. What can I do about this ?
barEntries=new ArrayList <> ( );
XAxisLabels=new ArrayList <> ( );
barEntries.add ( new BarEntry ( 0,0 ) );
XAxisLabels.add ( "2017-10-29 09:26:07" );
barEntries.add ( new BarEntry ( 1,400 ) );
XAxisLabels.add ( "2017-10-28 19:04:22" );
barEntries.add ( new BarEntry ( 2,200 ) );
XAxisLabels.add ( "2017-10-28 19:05:12" );
barEntries.add ( new BarEntry ( 3,300 ) );
XAxisLabels.add ( "2017-10-29 09:26:07" );
BarDataSet barDataSet = new BarDataSet ( barEntries, "DataSet" );
barDataSet.setColors ( ColorTemplate.COLORFUL_COLORS );
BarData barData = new BarData ( barDataSet );
XAxis xAxis = barChart.getXAxis ( );
xAxis.setPosition ( XAxis.XAxisPosition.BOTH_SIDED );
xAxis.setValueFormatter ( new MyXAxisValueFormatter ( XAxisLabels ) );
//xAxis.setGranularity ( 1 );
xAxis.setCenterAxisLabels ( true );
//xAxis.setAxisMinimum ( 1 );
barChart.setData ( barData );
barChart.notifyDataSetChanged ( );
barChart.invalidate ( );
My Formatter:
public class MyXAxisValueFormatter implements IAxisValueFormatter{
int counter=0;
private ArrayList <String> mValues = new ArrayList <> ( );
public MyXAxisValueFormatter(ArrayList<String> values)
{
this.mValues=values;
}
@Override
public String getFormattedValue ( float value, AxisBase axis ) {
String x;
value=value+counter*0.3f;
counter++;
x= mValues.get ( (int)value);
return x;
}
}