我在线图上使用MPAndroidChart。 我有日期值和分数值 例如:2016年10月11日我的分数是45。
我正在与日期挣扎。不知道如何在我的setYAxisValues中设置它 我从休息api获取我的值并将其放入图表中。
这部分是我遇到问题的地方。
yVals.add(new Entry(Float.valueOf(ocd.getScore()), foo));
如果我将foo更改为正常的int值,如1,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;
}
提前致谢
答案 0 :(得分: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()));
“01/01/2016”.toMillis()当然是伪代码,您需要将日期转换为int(float)。
然后,将minX设置为“01/01/2016”.toMillis(),将maxX设置为“04/01/2016”.toMillis(), 并提供一个标签格式化器,将此毫米格式化回字符串日期:
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);
}
}