MP Android не показывает значение оси X - PullRequest
0 голосов
/ 12 октября 2018

Гистограмма со значением NO X Я могу успешно построить график MP Android, но если я нажму на конкретную полосу, то на ней не будет отображаться значение оси X.Я использую kotlin, и ниже приведена часть примера кода.

Ввод:

[{"date": "2018-09-15", "count": "5"}, {"date": "2018-09-16", "count": "10"}]

Рабочий код:

val entries = ArrayList<BarEntry>()
    val labels = ArrayList<String>()
    val arr = JSONArray(jsonStringArray)
    for (i in 0 until arr.length()) {
        entries.add(BarEntry(arr.getJSONObject(i).getInt("count").toFloat(), i))
        labels.add(arr.getJSONObject(i).getString("date"))
           }
    val barDataSet = BarDataSet(entries, "Test Data")
    barDataSet.setValueTextSize(10f)
    val data = BarData(labels, barDataSet)
    barChart.data = data 
    val colors = intArrayOf(Color.rgb(132, 101, 122))
    barDataSet.setColors(colors)

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете реализовать свой собственный ValueFormatter, чтобы показать любой текст, который вы хотите.В getFormattedValue() вы получаете доступ к entry, который вы можете назвать getXIndex()

private class MyValueFormatter implements ValueFormatter
{

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return String.format("%d,%f",entry.getXIndex(),value);
    }
}

В kotlin вы можете сделать это так:

barDataSet.valueFormatter = object : ValueFormatter{
    fun getFormattedValue(value: Float, entry: Entry, dataSetIndex: Int, viewPortHandler: ViewPortHandler): String {
        return String.format("%d,%f", entry.xIndex, value)
    }
}
...