2016-12-14 40 views
1

我正在为我的折线图使用MPAndroidChart。 我有日期值和分数值。
例如:2016年10月10日,我的分数是45.Android - MPAndroidChart LineChart,无法根据数值日期进行绘图

我正在努力与日期。不知道如何将其设置在我的setYAxisValues中。
我得到我的值从一个休息api,并把它放在图中。

这部分是我的问题。

yVals.add(new Entry(Float.valueOf(ocd.getScore()), foo)); 

如果更改FOO像1正常int值,2,3我没有问题。该图正在工作。这个问题,我需要使用日期在正确的地方绘制我的价值。

@Override 
protected void onPostExecute(List<ResultModel> result) { 
    super.onPostExecute(result); 
    //populating my yAxis with values from rest 
    for (ResultModel ocd : resModelList){ 
     long unixSeconds = Long.parseLong(ocd.getPost_date()); 
     Date date = new Date(unixSeconds*1000L); 
     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); 
     String formattedDate = sdf.format(date); 
     int foo = Integer.parseInt(formattedDate); 
     yVals.add(new Entry(Float.valueOf(ocd.getScore()), foo)); 
    } 
} 

X轴工作

//set vales 
private ArrayList<String> setXAxisValues(){ 
    xVals = new ArrayList<String>(); 
//MM/dd/yyyy 
    xVals.add("01/01/2016"); 
    xVals.add("02/01/2016"); 
    xVals.add("03/01/2016"); 
    xVals.add("04/01/2016"); 
    xVals.add("05/01/2016"); 
    return xVals; 
} 

private ArrayList<Entry> setYAxisValues(){ 
    yVals = new ArrayList<Entry>(); 
    return yVals; 
} 

在此先感谢

回答

1

我有类似的问题,重点是 - MPChart库不能有任何东西,但浮动的X轴。我建议你用X轴表示日期毫秒。假设您有四个值,日期分别为“01/01/2016”,“02/01/2016”,“03/01/2016”,“04/01/2016”,“05/01/2016”。您添加值一样

yVals.add(new Entry(Float.valueOf(ocd.getScore()), "01/01/2016".toMillis())); 

“2016年1月1日” .toMillis()当然是伪代码,你需要转换您的日期为int(浮动)。

然后,将minX设置为“01/01/2016”.toMillis(),maxX为“04/01/2016”.toMillis(), 并提供一个标签formater,该标签将将此毫米重新格式化为字符串日期:

private class LabelFormatter implements AxisValueFormatter { 

     private Context context; 

     private LabelFormatter(Context context) { 
      this.context = context; 
     } 

     @Override 
     public int getDecimalDigits() { 
      return -1; 
     } 

     @Override 
     public String getFormattedValue(float value, AxisBase axis) { 
      return DateUtils.formatDateTime(context, (long) value, DateUtils.FORMAT_SHOW_DATE); 
     } 
    } 
+0

谢谢,为我指出了正确的方向。我卡在getFormattedValue部分。你可以请这个部分帮忙一下。 –

+0

@CharmGeld更新了这个部分,试试这个代码,它应该在设备的语言环境中打印日期。对于不同的格式选项,我建议你使用android.text.format.DateFormat或这个android.text.format.DateUtils类。他们关心每个用户的日期和时间显示选项:区域设置,12/24格式等。 –

+0

再次感谢您的帮助 –