2017-07-26 123 views
1

我想做折线图,但我有问题要显示xAxis中的值字符串,我使用库Github从MPAndroidChart LineChart。请帮我如何添加字符串值,实际上对很多问题,我想问问如何在MPAndroidChart中设置xAxis的字符串值?

private void drawLineChartLine(){ 

     private float[] yDataL = {40, 60, 70, 80}; 
     private String[] xDataL = {"Week 1", "Week 1" , "Week 3" , "Week 4"}; 


     ArrayList<Entry> yEntrys = new ArrayList<>(); 

     final ArrayList<String> xEntrys = new ArrayList<>(); 

     for(int i = 0; i < yDataL.length; i++){ 
      yEntrys.add(new Entry(yDataL[i] ,i)); 
     } 

     for(int i = 1; i < xDataL.length; i++){ 
      xEntrys.add(xDataL[i]); 
     } 

     //create the data set 
     LineDataSet lineDataset = new LineDataSet(yEntrys, "assa"); 

     XAxis xAxis = lineChart.getXAxis(); 
     xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); 
     xAxis.setDrawGridLines(false); 


     xAxis.setValueFormatter(new IAxisValueFormatter() { 
      @Override 
      public String getFormattedValue(float value, AxisBase axis) { 
       return xEntrys.get((int) value); 
      } 
     }); 

     LineData lineData = new LineData(lineDataset); 
     lineChart.setData(lineData); 
     lineChart.invalidate(); 
} 

我得到错误

无效的指数40,大小为6

在代码

xAxis.setValueFormatter(new IAxisValueFormatter() { 
      @Override 
      public String getFormattedValue(float value, AxisBase axis) { 
       return xEntrys.get((int) value); 
      } 
     }); 

回答

2

您正在访问ArrayList索引超出范围,因为你正试图使用​​价值作为一个指标。你需要找到值的索引来返回它。

xAxis.setValueFormatter(new IAxisValueFormatter() { 
    @Override 
    public String getFormattedValue(float value, AxisBase axis) { 
     for (int i = 0 ; i < yEntrys.size(); ++i) { 
      if (yEntrys.get(i).equals(value)) { 
       return xEntrys.get(i); 
      } 
     } 
     return null; 
    } 
}); 
相关问题