我正在使用 MPAndroidChart 库创建带有动态数据的折线图。在我的 y 轴上显示评分点,在 x 轴上显示相关日期。 Screenshot 显示当前折线图(但 x 轴错误)。我想根据数据点对齐 x 轴值。
我做了什么:
因此,我添加了具有线性上升索引 (i=0, i=1,...) 的 Entry
作为 x 值,然后我想使用 ValueFormatter 将值与正确的日期交换。< /p>
var i = 0
while (i < sortedGoalEvaluations.size) {
entriesSatisfaction.add(
Entry(
i.toFloat(),
sortedGoalEvaluations[i].safeSatisfactionValue.toFloat()
)
)
i++
}
val satisfactionSet =
LineDataSet(
entriesSatisfaction,
getString(R.string.satisfaction)
)
dataSets.add(satisfactionSet)
xAxis.valueFormatter=object :ValueFormatter(){
override fun getFormattedValue(value: Float): String {
println(value)
return convertMillisToStringDate(sortedGoalEvaluations[value.toInt()].evaluationDate,"dd.MM.yyyy")!!
}
}
这应该很简单,但我的问题是我得到了一个 IndexOutOfBoundExeption。我可以定位问题的来源,但我真的不知道如何解决。
ValueFormatter 获取条目列表 mEntries
,它包含 5 个值(请参阅 Screenshot)。正确的数据应该是这样的:
x, y
0, 3
1, 9
2, 3
3, 6
4, 10
5, 5
6, 4
7, 2
8, 6
ValueFormatter 尝试使用例如找到一个值23.33333
而不是例如1
在这一行:
return convertMillisToStringDate(sortedGoalEvaluations[***value.toInt()***].evaluationDate,"dd.MM.yyyy")!!
这显然是不可能的。
有人遇到过类似的问题和解决方案吗?我将不胜感激。