如何解决使用 MpAndroidChart 在折线图上使用 2 种类型的数据时如何清除实际图表数据
我正在尝试使用带有 2 个按钮的 MpAndroidChart 库创建折线图。单击第一个按钮时,图表将显示 3 天的数据,单击第二个按钮时,图表将显示 7 天的数据,但是当我按下第二个按钮时,新数据会添加到旧数据之上。 我试图清除传递给 LineDataSet 的数组,试图清除()图表,但每次出现错误时。 我有 2 个不同的函数来在图表上显示 2 条不同的线。如果您有任何建议,请告诉我如何解决。
设置第一类数据的函数:
private fun setCashData(cashList: MutableList<CashCollection.CashCollectionItem>,daysNmb: Int) {
val dataCashEntries: ArrayList<Entry> = arrayListOf()
val dateArrayList: ArrayList<String> = arrayListOf()
val reverseCashList: MutableList<CashCollection.CashCollectionItem> = arrayListOf()
var i = 0F
val listIterator = cashList.listIterator()
while (listIterator.hasNext()) listIterator.next()
while (listIterator.hasPrevious()) reverseCashList.add(listIterator.previous())
for (item in reverseCashList) {
if (i <= daysNmb) {
var cashValue: String = item.value!!.replaceFirst(",",".")
var date: String = item.label!!.replace(".2020","")
if (cashValue.toFloat() != 0F) {
dataCashEntries.add(Entry(i,cashValue.toFloat()))
dateArrayList.add(date)
i++
}
}
}
var lineDataSet1 = LineDataSet(dataCashEntries,"Cash Collection")
lineDataSet1.setCircleColor(getChartsColors()[0])
lineDataSet1.color = getChartsColors()[0]
lineDataSet1.circleSize = 5f
lineDataSet1.lineWidth = 3f
lineDataSet1.fillAlpha = 160
lineDataSet1.setDrawFilled(true)
lineDataSet1.fillColor = getChartsColors()[0]
lineData.addDataSet(lineDataSet1)
lineData.setValueTextSize(10f)
line_chart_details.data = lineData
line_chart_details.description.isEnabled = false
val xAxis = line_chart_details.xAxis
val yAxisRight = line_chart_details.axisRight
val yAxisLeft = line_chart_details.axisLeft
yAxisRight.isEnabled = false
yAxisLeft.isEnabled = true
yAxisLeft.setDrawLabels(true)
yAxisLeft.setDrawGridLines(true)
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.isEnabled = true
line_chart_details.xAxis.valueFormatter = IndexAxisValueFormatter(dateArrayList)
//line_chart.xAxis.mAxisRange = barLabesArrayList.size.toFloat()
line_chart_details.isClickable = false
line_chart_details.isHighlightPerTapEnabled = false
line_chart_details.onTouchListener = null
line_chart_details.legend.isEnabled = true
line_chart_details.animateY(2000)
line_chart_details.invalidate()
line_chart_details.clear();
}
设置第二种数据的函数
private fun setFinancialData(financialList: MutableList<FinancialDetails.FinancialDetailsItem>,daysNmb: Int) {
val dataFinancialEntries: ArrayList<Entry> = ArrayList()
val reverseFinancialList: MutableList<FinancialDetails.FinancialDetailsItem> = ArrayList()
var i = 0F
val listIterator = financialList.listIterator()
while (listIterator.hasNext()) listIterator.next()
while (listIterator.hasPrevious()) reverseFinancialList.add(listIterator.previous())
for (item in reverseFinancialList) {
if (i <= daysNmb) {
val value: String = item.value!!.replaceFirst(",".")
if (value.toFloat() != 0F) {
dataFinancialEntries.add(Entry(i,value.toFloat()))
i++
}
}
}
var lineDataSet2 = LineDataSet(dataFinancialEntries,"Financial Details")
lineDataSet2.setCircleColor(getChartsColors()[1])
lineDataSet2.color = getChartsColors()[1]
lineDataSet2.circleSize = 5f
lineDataSet2.lineWidth = 2f
lineDataSet2.fillAlpha = 160
lineDataSet2.setDrawFilled(true)
lineDataSet2.fillColor = getChartsColors()[1]
lineData.addDataSet(lineDataSet2)
lineData.setValueTextSize(10f)
line_chart_details.data = lineData
line_chart_details.description.isEnabled = false
val xAxis = line_chart_details.xAxis
val yAxisRight = line_chart_details.axisRight
val yAxisLeft = line_chart_details.axisLeft
yAxisRight.isEnabled = false
yAxisLeft.isEnabled = true
yAxisLeft.setDrawLabels(true)
yAxisLeft.setDrawGridLines(true)
xAxis.position = XAxis.XAxisPosition.BOTTOM
xAxis.isEnabled = true
line_chart_details.isClickable = false
line_chart_details.isHighlightPerTapEnabled = false
line_chart_details.onTouchListener = null
line_chart_details.legend.isEnabled = true
line_chart_details.animateY(2000)
line_chart_details.invalidate()
}
按钮代码:
last_days_money_button.setOnClickListener {
last_days_money_button.isSelected = !last_days_money_button.isSelected
last_week_money_button.isSelected = !last_week_money_button.isSelected
financialDetailsObserverDays()
cashCollectionObserverDays()
}
last_week_money_button.setOnClickListener {
last_week_money_button.isSelected = !last_week_money_button.isSelected
last_days_money_button.isSelected = !last_days_money_button.isSelected
financialDetailsObserverWeek()
cashCollectionObserverWeek()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。