0
int에서 String으로 (실제로는 날짜) XAxis 값을 형식화하고 싶습니다. ArrayList 크기에 도달하면 형식화 프로그램이 중지되지 않고 배열 범위 예외를 벗어납니다. 이것에 대해 내가 뭘 할 수 있니?MPAndroidChart 배열 범위 밖의 값 형식화 자
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 ();
내 포맷터 : 그것은 작동
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;
}
}
는 ... 단지 문자열로 부동의 변환을 확인합니다. 이 방법은 arraylist를 제공 할 필요가없는 각 값을 자동으로 호출합니다. 그것이 작동하는 경우에 대답으로이 포스트를 표시하는 것을 잊지 말라. 해피 코딩 친구 :) –
하지만 x 축에 서명하는 데 필요한 문자열이 어디에 있는지 어떻게 알 수 있습니까? –
기본적으로 선택된 축에서 축 값 형식화 기가 호출됩니다. 따라서 특정 축에서 호출하면 모든 레이블의 값을 가져 와서 하나씩 변환합니다. –