Диаграмма android mp устанавливает дату на оси x в формате дд-мм-гггг

Я использую MPCHART для Android, но хочу показать значение даты на оси X, но BarEntry принимает значение с плавающей запятой, как анализировать дату для ввода значения в BarEntry или любую альтернативу для добавления значения в гистограмму осей x и y .

    private void grossChartSetup(ArrayList<BarEntry> grosssalesamountToday) {
    grossChart.setMarker(iMarker);

    grossChart.setDrawBarShadow(false);
    grossChart.setMaxVisibleValueCount(24);
    grossChart.setPinchZoom(false);
    grossChart.setEnabled(false);
    grossChart.setDrawBarShadow(false);
    grossChart.setDoubleTapToZoomEnabled(false);
    grossChart.getDescription().setEnabled(false);
    grossChart.setHighlightFullBarEnabled(false);
    grossChart.setOnChartGestureListener(this);


    BarDataSet orderDataSet1 = new BarDataSet(grosssalesamountToday, "Actual");
    orderDataSet1.setColor(mContext.getResources().getColor(R.color.darkCyan));
    BarData orderdata = new BarData(orderDataSet1);
    orderdata.setValueFormatter(new LargeValueFormatter());
    grossChart.setData(orderdata);

    float barWidth = 0.1f;
    grossChart.getBarData().setBarWidth(barWidth);

    XAxis orderXAxis = orderChart.getXAxis();
    orderXAxis.setDrawGridLines(false);
    orderXAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

// orderXAxis.setValueFormatter (новый DayXAxisFormatter ());

    YAxis orderRightYAxis = orderChart.getAxisRight();
    YAxis orderLeftAxis = orderChart.getAxisLeft();
    orderLeftAxis.setDrawGridLines(false);
    orderRightYAxis.setEnabled(false);

    grossChart.getLegend().setPosition(Legend.LegendPosition.ABOVE_CHART_RIGHT);

    grossChart.invalidate();
    grossChart.setVisibleXRangeMaximum(7);
}

Вы пробовали преобразовать Float в Int?

Ümañg ßürmån 31.10.2018 12:48

значение, поступающее с сервера, имеет тип даты, то есть дд-мм-гггг, но запись в строке принимает только формат flaot, я хочу передать значение в строковый формат и показать дату, как она есть на оси x

Ankita Singh 31.10.2018 12:49

Есть ли у них проблемы с преобразованием даты в строку?

Ümañg ßürmån 31.10.2018 12:54

его уже в строке, мне нужно преобразовать его в float, и это создает проблему «22-10-2018», если вы конвертируете его во flaot, какое значение он даст? это проблема

Ankita Singh 31.10.2018 12:59
0
4
797
1

Ответы 1

Вы должны создать собственное средство форматирования значений, как показано ниже.

public class MyYAxisValueFormatter implements IValueFormatter {


    public MyYAxisValueFormatter() {
    }

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        // "value" represents the position of the label on the axis (x or y)
        // value => date in MiliSecond
        val dateFormat = SimpleDateFormat("yyyy-MM-dd")
        return dateFormat.format(value)
    }
}

и после этого вы можете установить это как свой dataFormatter, как показано ниже

dataSet.setValueFormatter(new MyYAxisValueFormatter())

Другие вопросы по теме