From 97cd0eecd45460cc7a6b3ca5d3820ed0735924a3 Mon Sep 17 00:00:00 2001 From: Hannes Achleitner Date: Thu, 25 Dec 2025 08:00:40 +0100 Subject: [PATCH] Kotlin IBaseProvider --- .../mikephil/charting/charts/BarChart.kt | 4 + .../mikephil/charting/charts/BubbleChart.kt | 5 ++ .../charting/charts/CandleStickChart.kt | 5 ++ .../mikephil/charting/charts/LineChart.kt | 13 ++- .../mikephil/charting/charts/PieChart.kt | 7 +- .../charting/charts/PieRadarChartBase.kt | 84 +++++++++---------- .../mikephil/charting/charts/RadarChart.kt | 20 +++-- .../mikephil/charting/charts/ScatterChart.kt | 5 ++ .../charting/highlight/ChartHighlighter.kt | 37 ++++---- .../charting/highlight/PieHighlighter.kt | 2 +- .../charting/highlight/PieRadarHighlighter.kt | 2 +- .../charting/highlight/RadarHighlighter.kt | 4 +- .../BarLineScatterCandleBubbleDataProvider.kt | 3 +- .../{IBaseProvider.java => IBaseProvider.kt} | 47 +++++------ .../listener/BarLineChartTouchListener.kt | 2 +- .../charting/renderer/BarChartRenderer.kt | 1 - .../renderer/CombinedChartRenderer.kt | 2 +- .../charting/renderer/DataRenderer.kt | 3 +- .../renderer/HorizontalBarChartRenderer.kt | 7 +- .../charting/renderer/PieChartRenderer.kt | 15 ++-- .../charting/renderer/RadarChartRenderer.kt | 20 ++--- .../renderer/XAxisRendererRadarChart.kt | 2 +- .../renderer/YAxisRendererRadarChart.kt | 2 +- .../appdev/chartexample/AnotherBarActivity.kt | 14 ++-- .../appdev/chartexample/BarChartActivity.kt | 16 ++-- .../BarChartActivityMultiDataset.kt | 18 ++-- .../chartexample/BarChartActivitySinus.kt | 14 ++-- .../chartexample/BarChartPositiveNegative.kt | 8 +- .../chartexample/BubbleChartActivity.kt | 6 +- .../chartexample/CandleStickChartActivity.kt | 8 +- .../chartexample/CombinedChartActivity.kt | 10 +-- .../chartexample/CubicLineChartActivity.kt | 32 +++---- .../info/appdev/chartexample/DataTools.kt | 5 +- .../appdev/chartexample/DrawChartActivity.kt | 8 +- .../chartexample/DynamicalAddingActivity.kt | 8 +- .../appdev/chartexample/FilledLineActivity.kt | 9 +- .../HorizontalBarChartActivity.kt | 18 ++-- .../HorizontalBarNegativeChartActivity.kt | 18 ++-- .../chartexample/InvertedLineChartActivity.kt | 8 +- .../appdev/chartexample/LineChartActivity.kt | 16 ++-- .../chartexample/LineChartDualAxisActivity.kt | 27 +++--- .../chartexample/LineChartTimeActivity.kt | 12 +-- .../chartexample/MultiLineChartActivity.kt | 14 ++-- .../appdev/chartexample/PieChartActivity.kt | 4 +- .../chartexample/PieChartRoundedActivity.kt | 4 +- .../chartexample/PiePolylineChartActivity.kt | 2 +- .../appdev/chartexample/RadarChartActivity.kt | 8 +- .../chartexample/RealtimeLineChartActivity.kt | 42 +++++----- .../chartexample/ScatterChartActivity.kt | 4 +- .../SpecificPositionsLineChartActivity.kt | 19 +++-- .../appdev/chartexample/StackedBarActivity.kt | 16 ++-- .../StackedBarActivityNegative.kt | 8 +- .../compose/HorizontalBarComposeActivity.kt | 48 +++++------ 53 files changed, 364 insertions(+), 352 deletions(-) rename MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/{IBaseProvider.java => IBaseProvider.kt} (50%) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarChart.kt index 2e547de255..189fddbde5 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BarChart.kt @@ -251,4 +251,8 @@ open class BarChart : BarLineChartBase, BarDataProvider { } return "" } + + override fun setData(data: BarData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BubbleChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BubbleChart.kt index d11ada742f..1d95e5a0b5 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BubbleChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/BubbleChart.kt @@ -3,6 +3,7 @@ package com.github.mikephil.charting.charts import android.content.Context import android.util.AttributeSet import com.github.mikephil.charting.data.BubbleData +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.interfaces.dataprovider.BubbleDataProvider import com.github.mikephil.charting.renderer.BubbleChartRenderer @@ -31,4 +32,8 @@ class BubbleChart : BarLineChartBase, BubbleDataProvider { override fun getAccessibilityDescription(): String { return "This is bubble chart" } + + override fun setData(data: BubbleData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.kt index 3f36fb43c6..c391e049d0 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/CandleStickChart.kt @@ -3,6 +3,7 @@ package com.github.mikephil.charting.charts import android.content.Context import android.util.AttributeSet import com.github.mikephil.charting.data.CandleData +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.interfaces.dataprovider.CandleDataProvider import com.github.mikephil.charting.renderer.CandleStickChartRenderer @@ -31,4 +32,8 @@ class CandleStickChart : BarLineChartBase, CandleDataProvider { override fun getAccessibilityDescription(): String { return "This is a candlestick chart" } + + override fun setData(data: CandleData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/LineChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/LineChart.kt index 3cefc5ee61..d0e7a7e730 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/LineChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/LineChart.kt @@ -2,12 +2,13 @@ package com.github.mikephil.charting.charts import android.content.Context import android.util.AttributeSet +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.data.LineData import com.github.mikephil.charting.interfaces.dataprovider.LineDataProvider import com.github.mikephil.charting.renderer.LineChartRenderer import java.util.Locale -open class LineChart : BarLineChartBase, LineDataProvider { +open class LineChart : BarLineChartBase, LineDataProvider { constructor(context: Context?) : super(context) constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) @@ -18,12 +19,16 @@ open class LineChart : BarLineChartBase, LineDataProvider { mRenderer = LineChartRenderer(this, mAnimator, mViewPortHandler) } - override val lineData: LineData + override var lineData: LineData get() { return mData ?: run { LineData() } } + set(value) { + mData = value + notifyDataSetChanged() + } public override fun onDetachedFromWindow() { // releases the bitmap in the renderer to avoid oom error @@ -54,4 +59,8 @@ open class LineChart : BarLineChartBase, LineDataProvider { numberOfPoints, entries, minVal, maxVal, minRange, maxRange ) } + + override fun setData(data: LineData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieChart.kt index 3e0803841c..b87374e7b0 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieChart.kt @@ -7,6 +7,7 @@ import android.graphics.Typeface import android.text.TextUtils import android.util.AttributeSet import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.data.PieData import com.github.mikephil.charting.highlight.Highlight import com.github.mikephil.charting.highlight.PieHighlighter @@ -586,7 +587,7 @@ class PieChart : PieRadarChartBase { } override fun getAccessibilityDescription(): String { - val pieData = data + val pieData = getData() as PieData? var entryCount = 0 if (pieData != null) entryCount = pieData.entryCount @@ -609,4 +610,8 @@ class PieChart : PieRadarChartBase { return builder.toString() } + + override fun setData(data: PieData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.kt index 2425565f52..9ea684cbe3 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/PieRadarChartBase.kt @@ -88,9 +88,8 @@ abstract class PieRadarChartBase>> //mXAxis.mAxisRange = mData.getXVals().size() - 1; } - override fun getMaxVisibleCount(): Int { - return mData!!.entryCount - } + override val maxVisibleCount: Int + get() = mData!!.entryCount override fun onTouchEvent(event: MotionEvent?): Boolean { // use the Pie- and RadarChart listener own listener @@ -183,10 +182,12 @@ abstract class PieRadarChartBase>> mLegend.mNeededHeight, mViewPortHandler.chartHeight * mLegend.maxSizePercent ) + LegendVerticalAlignment.BOTTOM -> legendBottom = min( mLegend.mNeededHeight, mViewPortHandler.chartHeight * mLegend.maxSizePercent ) + LegendVerticalAlignment.CENTER -> Log.e(LOG_TAG, "LegendCenter/VerticalCenter not supported for PieRadarChart") } } @@ -258,27 +259,28 @@ abstract class PieRadarChartBase>> * 90° is EAST, ... */ fun getAngleForPoint(x: Float, y: Float): Float { - val c = centerOffsets - - val tx = (x - c.x).toDouble() - val ty = (y - c.y).toDouble() - val length = sqrt(tx * tx + ty * ty) - val r = acos(ty / length) + centerOffsets?.let { c -> - var angle = Math.toDegrees(r).toFloat() + val tx = (x - c.x).toDouble() + val ty = (y - c.y).toDouble() + val length = sqrt(tx * tx + ty * ty) + val r = acos(ty / length) - if (x > c.x) angle = 360f - angle + var angle = Math.toDegrees(r).toFloat() - // add 90° because chart starts EAST - angle += 90f + if (x > c.x) angle = 360f - angle - // neutralize overflow - if (angle > 360f) - angle -= 360f + // add 90° because chart starts EAST + angle += 90f - recycleInstance(c) + // neutralize overflow + if (angle > 360f) + angle -= 360f - return angle + recycleInstance(c) + return angle + } + return 0f } /** @@ -302,28 +304,30 @@ abstract class PieRadarChartBase>> * Returns the distance of a certain point on the chart to the center of the chart. */ fun distanceToCenter(x: Float, y: Float): Float { - val c = centerOffsets + centerOffsets?.let { c -> - val dist: Float + val dist: Float - val xDist: Float = if (x > c.x) { - x - c.x - } else { - c.x - x - } + val xDist: Float = if (x > c.x) { + x - c.x + } else { + c.x - x + } - val yDist: Float = if (y > c.y) { - y - c.y - } else { - c.y - y - } + val yDist: Float = if (y > c.y) { + y - c.y + } else { + c.y - y + } - // pythagoras - dist = sqrt(xDist.toDouble().pow(2.0) + yDist.toDouble().pow(2.0)).toFloat() + // pythagoras + dist = sqrt(xDist.toDouble().pow(2.0) + yDist.toDouble().pow(2.0)).toFloat() - recycleInstance(c) + recycleInstance(c) - return dist + return dist + } + return 0f } /** @@ -376,15 +380,11 @@ abstract class PieRadarChartBase>> */ protected abstract val requiredBaseOffset: Float - override fun getYChartMax(): Float { - // TODO Auto-generated method stub - return 0f - } + override val yChartMax: Float + get() = 0f - override fun getYChartMin(): Float { - // TODO Auto-generated method stub - return 0f - } + override val yChartMin: Float + get() = 0f /** * Apply a spin animation to the Chart. diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/RadarChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/RadarChart.kt index 102806bced..22ec0caea0 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/RadarChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/RadarChart.kt @@ -6,6 +6,7 @@ import android.graphics.Color import android.util.AttributeSet import com.github.mikephil.charting.components.YAxis import com.github.mikephil.charting.components.YAxis.AxisDependency +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.data.RadarData import com.github.mikephil.charting.highlight.RadarHighlighter import com.github.mikephil.charting.renderer.RadarChartRenderer @@ -283,21 +284,24 @@ class RadarChart : PieRadarChartBase { /** * Returns the maximum value this chart can display on it's y-axis. */ - override fun getYChartMax(): Float { - return mYAxis!!.mAxisMaximum + override val yChartMax: Float + get() = mYAxis!!.mAxisMaximum + + override fun setData(data: RadarData?) { + super.setData(data) } + /** * Returns the minimum value this chart can display on it's y-axis. */ - override fun getYChartMin(): Float { - return mYAxis!!.mAxisMinimum - } + override val yChartMin: Float + get() = mYAxis!!.mAxisMinimum + /** + * Range of y-values this chart can display. + */ val yRange: Float - /** - * Returns the range of y-values this chart can display. - */ get() = mYAxis!!.mAxisRange override fun getAccessibilityDescription(): String { diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/ScatterChart.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/ScatterChart.kt index e41887dd78..eb77038219 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/charts/ScatterChart.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/charts/ScatterChart.kt @@ -2,6 +2,7 @@ package com.github.mikephil.charting.charts import android.content.Context import android.util.AttributeSet +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.data.ScatterData import com.github.mikephil.charting.interfaces.dataprovider.ScatterDataProvider import com.github.mikephil.charting.renderer.ScatterChartRenderer @@ -65,4 +66,8 @@ class ScatterChart : BarLineChartBase, ScatterDataProvider { override fun getAccessibilityDescription(): String { return "This is scatter chart" } + + override fun setData(data: ScatterData?) { + super.setData(data) + } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/ChartHighlighter.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/ChartHighlighter.kt index 0a7e8354e2..0188901fbf 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/ChartHighlighter.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/ChartHighlighter.kt @@ -1,7 +1,7 @@ package com.github.mikephil.charting.highlight import com.github.mikephil.charting.components.YAxis.AxisDependency -import com.github.mikephil.charting.data.BarLineScatterCandleBubbleData +import com.github.mikephil.charting.data.ChartData import com.github.mikephil.charting.data.DataSet import com.github.mikephil.charting.data.Entry import com.github.mikephil.charting.interfaces.dataprovider.base.BarLineScatterCandleBubbleDataProvider @@ -50,7 +50,7 @@ open class ChartHighlighter(protecte val axis = if (leftAxisMinDist < rightAxisMinDist) AxisDependency.LEFT else AxisDependency.RIGHT - return getClosestHighlightByPixel(closestValues, x, y, axis, provider.getMaxHighlightDistance()) + return getClosestHighlightByPixel(closestValues, x, y, axis, provider.maxHighlightDistance) } /** @@ -89,25 +89,24 @@ open class ChartHighlighter(protecte protected open fun getHighlightsAtXValue(xVal: Float, x: Float, y: Float): MutableList? { highlightBuffer.clear() - val data = this.data - - var i = 0 - val dataSetCount = data.dataSetCount - while (i < dataSetCount) { - val dataSet= data.getDataSetByIndex(i) - - // don't include DataSets that cannot be highlighted - dataSet?.let { - if (!it.isHighlightEnabled) { - i++ - continue + data?.let { myData -> + var i = 0 + val dataSetCount = myData.dataSetCount + while (i < dataSetCount) { + val dataSet = myData.getDataSetByIndex(i) + + // don't include DataSets that cannot be highlighted + dataSet?.let { + if (!it.isHighlightEnabled) { + i++ + continue + } + highlightBuffer.addAll(buildHighlights(it, i, xVal, DataSet.Rounding.CLOSEST)) } - highlightBuffer.addAll(buildHighlights(it, i, xVal, DataSet.Rounding.CLOSEST)) - } - i++ + i++ + } } - return highlightBuffer } @@ -186,6 +185,6 @@ open class ChartHighlighter(protecte return hypot((x1 - x2).toDouble(), (y1 - y2).toDouble()).toFloat() } - protected open val data: BarLineScatterCandleBubbleData<*> + protected open val data: ChartData<*>? get() = provider.getData() } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieHighlighter.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieHighlighter.kt index 68e841920b..7abe47d1e2 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieHighlighter.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieHighlighter.kt @@ -5,7 +5,7 @@ import com.github.mikephil.charting.data.Entry open class PieHighlighter(chart: PieChart) : PieRadarHighlighter(chart) { override fun getClosestHighlight(index: Int, x: Float, y: Float): Highlight? { - val pieDataSet = chartPieRadar.data!!.dataSets!![0] + val pieDataSet = chartPieRadar.getData()!!.dataSets!![0] val entry: Entry? = pieDataSet.getEntryForIndex(index) diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieRadarHighlighter.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieRadarHighlighter.kt index 76f0532434..049dff0b3f 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieRadarHighlighter.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/highlight/PieRadarHighlighter.kt @@ -23,7 +23,7 @@ abstract class PieRadarHighlighter>(protected var chart val index = chartPieRadar.getIndexForAngle(angle) - val localData = chartPieRadar.data + val localData = chartPieRadar.getData() val maxCount = localData?.maxEntryCountSet?.entryCount ?: 0 return if (index !in 0.. val factor = chartPieRadar.factor val pOut = MPPointF.getInstance(0f, 0f) - for (i in 0.. +// override fun getData(): BarLineScatterCandleBubbleData<*> } \ No newline at end of file diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.java b/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.kt similarity index 50% rename from MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.java rename to MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.kt index b842ad94ee..ba8b144b18 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.java +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/interfaces/dataprovider/base/IBaseProvider.kt @@ -1,62 +1,55 @@ -package com.github.mikephil.charting.interfaces.dataprovider.base; +package com.github.mikephil.charting.interfaces.dataprovider.base -import android.graphics.RectF; - -import com.github.mikephil.charting.data.ChartData; -import com.github.mikephil.charting.formatter.IValueFormatter; -import com.github.mikephil.charting.utils.MPPointF; - -import androidx.annotation.Nullable; +import android.graphics.RectF +import com.github.mikephil.charting.data.ChartData +import com.github.mikephil.charting.formatter.IValueFormatter +import com.github.mikephil.charting.utils.MPPointF /** * Interface that provides everything there is to know about the dimensions, * bounds, and range of the chart. - * - * @author Philipp Jahoda */ -public interface IBaseProvider { - +interface IBaseProvider { /** * Returns the minimum x value of the chart, regardless of zoom or translation. */ - float getXChartMin(); + val xChartMin: Float /** * Returns the maximum x value of the chart, regardless of zoom or translation. */ - float getXChartMax(); + val xChartMax: Float - float getXRange(); + val xRange: Float /** * Returns the minimum y value of the chart, regardless of zoom or translation. */ - float getYChartMin(); + val yChartMin: Float /** * Returns the maximum y value of the chart, regardless of zoom or translation. */ - float getYChartMax(); + val yChartMax: Float /** * Returns the maximum distance in screen dp a touch can be away from an entry to cause it to get highlighted. */ - float getMaxHighlightDistance(); + var maxHighlightDistance: Float - int getWidth(); + val width: Int - int getHeight(); + val height: Int - MPPointF getCenterOfView(); + val centerOfView: MPPointF? - MPPointF getCenterOffsets(); + val centerOffsets: MPPointF - RectF getContentRect(); + val contentRect: RectF? - IValueFormatter getDefaultValueFormatter(); + val defaultValueFormatter: IValueFormatter? - @Nullable - ChartData getData(); + fun getData(): ChartData<*>? - int getMaxVisibleCount(); + val maxVisibleCount: Int } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/listener/BarLineChartTouchListener.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/listener/BarLineChartTouchListener.kt index c3a2f99962..98a8ba53b8 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/listener/BarLineChartTouchListener.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/listener/BarLineChartTouchListener.kt @@ -493,7 +493,7 @@ class BarLineChartTouchListener( onChartGestureListener?.onChartDoubleTapped(e) // check if double-tap zooming is enabled - if (chart.isDoubleTapToZoomEnabled && chart.data!!.entryCount > 0) { + if (chart.isDoubleTapToZoomEnabled && chart.getData()!!.entryCount > 0) { val trans = getTrans(e.x, e.y) val scaleX = if (chart.isScaleXEnabled) 1.4f else 1f diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BarChartRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BarChartRenderer.kt index 96fcde7587..593e9f0586 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BarChartRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/BarChartRenderer.kt @@ -254,7 +254,6 @@ open class BarChartRenderer( override fun drawValues(canvas: Canvas) { // if values are drawn - if (isDrawingValuesAllowed(dataProvider)) { val dataSets = dataProvider.barData?.dataSets diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/CombinedChartRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/CombinedChartRenderer.kt index 7c6373b29e..6ce07e58c8 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/CombinedChartRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/CombinedChartRenderer.kt @@ -84,7 +84,7 @@ open class CombinedChartRenderer(chart: CombinedChart, animator: ChartAnimator, val dataIndex = if (data == null) -1 else - (chart.data as CombinedData).allData.indexOf(data) + (chart.getData() as CombinedData).allData.indexOf(data) mHighlightBuffer.clear() diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/DataRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/DataRenderer.kt index d71a0ff080..66d3b6ea67 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/DataRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/DataRenderer.kt @@ -20,6 +20,7 @@ import com.github.mikephil.charting.utils.convertDpToPixel abstract class DataRenderer( @JvmField protected var animator: ChartAnimator, viewPortHandler: ViewPortHandler ) : Renderer(viewPortHandler) { + /** * main paint object used for rendering */ @@ -59,7 +60,7 @@ abstract class DataRenderer( } protected open fun isDrawingValuesAllowed(baseProvider: IBaseProvider): Boolean { - return baseProvider.data!!.entryCount < baseProvider.maxVisibleCount * viewPortHandler.scaleX + return baseProvider.getData()!!.entryCount < baseProvider.maxVisibleCount * viewPortHandler.scaleX } /** diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/HorizontalBarChartRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/HorizontalBarChartRenderer.kt index 6eae9736bb..fa88343b17 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/HorizontalBarChartRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/HorizontalBarChartRenderer.kt @@ -18,9 +18,6 @@ import com.github.mikephil.charting.utils.convertDpToPixel import kotlin.math.ceil import kotlin.math.min -/** - * Renderer for the HorizontalBarChart. - */ @Suppress("MemberVisibilityCanBePrivate") open class HorizontalBarChartRenderer( chart: BarDataProvider, animator: ChartAnimator, @@ -168,7 +165,6 @@ open class HorizontalBarChartRenderer( } override fun drawValues(canvas: Canvas) { - // if values are drawn if (isDrawingValuesAllowed(dataProvider)) { val dataSets = dataProvider.barData?.dataSets @@ -463,7 +459,6 @@ open class HorizontalBarChartRenderer( } override fun isDrawingValuesAllowed(baseProvider: IBaseProvider): Boolean { - return (baseProvider.data!!.entryCount < baseProvider.maxVisibleCount - * viewPortHandler.scaleY) + return baseProvider.getData()!!.entryCount < baseProvider.maxVisibleCount * viewPortHandler.scaleY } } diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.kt index 8c5327c17e..30a43a3857 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/PieChartRenderer.kt @@ -14,6 +14,7 @@ import androidx.core.graphics.createBitmap import androidx.core.graphics.withSave import com.github.mikephil.charting.animation.ChartAnimator import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.data.PieData import com.github.mikephil.charting.data.PieDataSet.ValuePosition import com.github.mikephil.charting.highlight.Highlight import com.github.mikephil.charting.interfaces.datasets.IPieDataSet @@ -101,10 +102,10 @@ open class PieChartRenderer( drawBitmap.eraseColor(Color.TRANSPARENT) - val pieData = chart.data + val pieData = chart.getData() - for (set in pieData!!.dataSets!!) { - if (set.isVisible && set.entryCount > 0) drawDataSet(set) + for (set in pieData?.dataSets ?: return) { + if (set.isVisible && set.entryCount > 0) drawDataSet(set as IPieDataSet) } } @@ -159,7 +160,7 @@ open class PieChartRenderer( if (!dataSet.isAutomaticallyDisableSliceSpacingEnabled) return dataSet.sliceSpace val spaceSizeRatio = dataSet.sliceSpace / viewPortHandler.smallestContentExtension - val minValueRatio = dataSet.yMin / chart.data!!.yValueSum * 2 + val minValueRatio = dataSet.yMin / (chart.getData()!! as PieData).yValueSum * 2 val sliceSpace = if (spaceSizeRatio > minValueRatio) 0f else dataSet.sliceSpace @@ -374,7 +375,7 @@ open class PieChartRenderer( val labelRadius = radius - labelRadiusOffset - val data = chart.data + val data = chart.getData() as PieData? val dataSets = data!!.dataSets val yValueSum = data.yValueSum @@ -765,7 +766,7 @@ open class PieChartRenderer( if (index >= drawAngles.size) continue - val set = chart.data?.getDataSetByIndex(indices[i].dataSetIndex) + val set = chart.getData()?.getDataSetByIndex(indices[i].dataSetIndex) as? IPieDataSet if (set == null || !set.isHighlightEnabled) continue @@ -905,7 +906,7 @@ open class PieChartRenderer( if (!chart.isDrawRoundedSlicesEnabled) return - val dataSet = chart.data!!.dataSet + val dataSet = (chart.getData()!! as PieData).dataSet if (!dataSet.isVisible) return diff --git a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.kt b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.kt index c5f730b3be..82ae7305df 100644 --- a/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.kt +++ b/MPChartLib/src/main/java/com/github/mikephil/charting/renderer/RadarChartRenderer.kt @@ -32,13 +32,13 @@ open class RadarChartRenderer( override fun initBuffers() = Unit override fun drawData(canvas: Canvas) { - chart.data?.let { radarData -> + chart.getData()?.let { radarData -> val mostEntries = radarData.maxEntryCountSet?.entryCount ?: 0 - for (set in radarData.dataSets!!) { + radarData.dataSets?.forEach { set -> if (set.isVisible) { - drawDataSet(canvas, set, mostEntries) + drawDataSet(canvas, set as IRadarDataSet, mostEntries) } } } @@ -128,10 +128,10 @@ open class RadarChartRenderer( val yOffset = 5f.convertDpToPixel() - for (i in 0.. + for (i in 0.. - chart.data!!.getDataSetByIndex(i) + chart.getData()!!.getDataSetByIndex(i) if (dataSet.entryCount == 0) { continue } @@ -222,7 +222,7 @@ open class RadarChartRenderer( webPaint.alpha = chart.webAlpha val xIncrements = 1 + chart.skipWebLineCount - val maxEntryCount = chart.data!!.maxEntryCountSet?.entryCount ?: 0 + val maxEntryCount = chart.getData()!!.maxEntryCountSet?.entryCount ?: 0 val p = MPPointF.getInstance(0f, 0f) var i = 0 @@ -253,7 +253,7 @@ open class RadarChartRenderer( innerAreaPath.rewind() paint.color = chart.layerColorList[j] } - for (i in 0.. + chart.getData()!!.maxEntryCountSet?.let { maxEntryCountSet -> for (i in 0.. + chart.getData()!!.maxEntryCountSet?.let { maxEntryCountSet -> for (j in 0.. 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set1 = BarDataSet(values, "Data Set") @@ -111,14 +111,14 @@ class AnotherBarActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -139,7 +139,7 @@ class AnotherBarActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else diff --git a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivity.kt index 27978293b0..4e98de39c8 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivity.kt @@ -134,12 +134,12 @@ class BarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect val set1: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set1 = BarDataSet(values, "The year 2017") @@ -192,21 +192,21 @@ class BarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -225,7 +225,7 @@ class BarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivityMultiDataset.kt b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivityMultiDataset.kt index b056fbc368..0e356c82ef 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivityMultiDataset.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivityMultiDataset.kt @@ -129,16 +129,16 @@ class BarChartActivityMultiDataset : DemoBase(), OnSeekBarChangeListener, OnChar val set3: BarDataSet val set4: BarDataSet - if (binding.chart1.data != null && binding.chart1.data!!.dataSetCount > 0) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet - set2 = binding.chart1.data!!.getDataSetByIndex(1) as BarDataSet - set3 = binding.chart1.data!!.getDataSetByIndex(2) as BarDataSet - set4 = binding.chart1.data!!.getDataSetByIndex(3) as BarDataSet + if (binding.chart1.barData != null && binding.chart1.barData!!.dataSetCount > 0) { + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet + set2 = binding.chart1.barData!!.getDataSetByIndex(1) as BarDataSet + set3 = binding.chart1.barData!!.getDataSetByIndex(2) as BarDataSet + set4 = binding.chart1.barData!!.getDataSetByIndex(3) as BarDataSet set1.entries = values1 set2.entries = values2 set3.entries = values3 set4.entries = values4 - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { // create 4 DataSets @@ -185,7 +185,7 @@ class BarChartActivityMultiDataset : DemoBase(), OnSeekBarChangeListener, OnChar } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() @@ -204,14 +204,14 @@ class BarChartActivityMultiDataset : DemoBase(), OnSeekBarChangeListener, OnChar } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt index 24e92e86c1..902f2f71e4 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt @@ -95,12 +95,12 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { val set: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set.entries = entries - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set = BarDataSet(entries, "Sinus Function") @@ -130,14 +130,14 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -157,7 +157,7 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/BarChartPositiveNegative.kt b/app/src/main/kotlin/info/appdev/chartexample/BarChartPositiveNegative.kt index 1e0571e300..d0ab71adfb 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BarChartPositiveNegative.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BarChartPositiveNegative.kt @@ -105,12 +105,12 @@ class BarChartPositiveNegative : DemoBase() { val set: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set = BarDataSet(values, "Values") diff --git a/app/src/main/kotlin/info/appdev/chartexample/BubbleChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/BubbleChartActivity.kt index d2119ba18c..9e71b84fa5 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BubbleChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BubbleChartActivity.kt @@ -153,21 +153,21 @@ class BubbleChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSel } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.bubbleData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.bubbleData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.bubbleData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/CandleStickChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/CandleStickChartActivity.kt index 0a321e9367..117e819232 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/CandleStickChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/CandleStickChartActivity.kt @@ -135,21 +135,21 @@ class CandleStickChartActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.candleData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.candleData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.candleData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -168,7 +168,7 @@ class CandleStickChartActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleMakeShadowSameColorAsCandle -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.candleData?.dataSets?.forEach { set -> (set as CandleDataSet).shadowColorSameAsCandle = !set.shadowColorSameAsCandle } diff --git a/app/src/main/kotlin/info/appdev/chartexample/CombinedChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/CombinedChartActivity.kt index 9e7dddefaa..97049bce9a 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/CombinedChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/CombinedChartActivity.kt @@ -237,7 +237,7 @@ class CombinedChartActivity : DemoBase() { } R.id.actionToggleLineValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.lineData?.dataSets?.forEach { if (it is LineDataSet) it.isDrawValues = !it.isDrawValues } @@ -245,7 +245,7 @@ class CombinedChartActivity : DemoBase() { } R.id.actionToggleBarValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { if (it is BarDataSet) it.isDrawValues = !it.isDrawValues } @@ -253,9 +253,9 @@ class CombinedChartActivity : DemoBase() { } R.id.actionRemoveDataSet -> { - val rnd = values[sampleCount]!!.toFloat().toInt() * binding.chart1.data!!.dataSetCount - binding.chart1.data!!.removeDataSet(binding.chart1.data!!.getDataSetByIndex(rnd)) - binding.chart1.data!!.notifyDataChanged() + val rnd = values[sampleCount]!!.toFloat().toInt() * binding.chart1.combinedData!!.dataSetCount + binding.chart1.combinedData!!.removeDataSet(binding.chart1.combinedData!!.getDataSetByIndex(rnd)) + binding.chart1.combinedData!!.notifyDataChanged() binding.chart1.notifyDataSetChanged() binding.chart1.invalidate() } diff --git a/app/src/main/kotlin/info/appdev/chartexample/CubicLineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/CubicLineChartActivity.kt index ec2785d561..f6948fe131 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/CubicLineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/CubicLineChartActivity.kt @@ -93,12 +93,11 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { val set1: LineDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.lineData.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as LineDataSet + set1 = binding.chart1.lineData.getDataSetByIndex(0) as LineDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.lineData.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { // create a dataset and give it a type @@ -129,7 +128,7 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { data.setDrawValues(false) // set data - binding.chart1.data = data + binding.chart1.setData(data) } } @@ -147,37 +146,38 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.lineData.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.lineData.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> - set.let { - set.isDrawFilledEnabled = !set.isDrawFilledEnabled - } + binding.chart1.lineData.dataSets?.forEach { + val set = it as LineDataSet + set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { + val set = it as LineDataSet set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } binding.chart1.invalidate() } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { + val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) LineDataSet.Mode.LINEAR else @@ -187,7 +187,8 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { + val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.STEPPED) LineDataSet.Mode.LINEAR else @@ -197,7 +198,8 @@ class CubicLineChartActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleHorizontalCubic -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { + val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.HORIZONTAL_BEZIER) LineDataSet.Mode.LINEAR else diff --git a/app/src/main/kotlin/info/appdev/chartexample/DataTools.kt b/app/src/main/kotlin/info/appdev/chartexample/DataTools.kt index f2520b4c15..9b799886e1 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/DataTools.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/DataTools.kt @@ -155,7 +155,7 @@ class DataTools { values.add(Entry(i.toFloat(), value, ContextCompat.getDrawable(context, R.drawable.star))) } } - lineChart.data?.let { + lineChart.getData()?.let { if (it.dataSetCount > 0) { val lineDataSet0 = it.getDataSetByIndex(0) as LineDataSet lineDataSet0.entries = values @@ -225,8 +225,7 @@ class DataTools { // create a data object with the data sets val data = LineData(dataSets) - // set data - lineChart.data = data + lineChart.setData(data) } } } diff --git a/app/src/main/kotlin/info/appdev/chartexample/DrawChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/DrawChartActivity.kt index c4367d967f..93fa7310bf 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/DrawChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/DrawChartActivity.kt @@ -67,7 +67,7 @@ class DrawChartActivity : DemoBase(), OnChartValueSelectedListener, OnDrawListen // create a data object with the data sets val data = LineData(set1) - binding.chart1.data = data + binding.chart1.setData(data) } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -78,14 +78,14 @@ class DrawChartActivity : DemoBase(), OnChartValueSelectedListener, OnDrawListen override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -134,7 +134,7 @@ class DrawChartActivity : DemoBase(), OnChartValueSelectedListener, OnDrawListen Timber.i("DataSet drawn. ${dataSet.toSimpleString()}") // prepare the legend again - binding.chart1.data?.let { binding.chart1.legendRenderer.computeLegend(it) } + binding.chart1.getData()?.let { binding.chart1.legendRenderer.computeLegend(it) } } override fun onEntryMoved(entry: Entry) { diff --git a/app/src/main/kotlin/info/appdev/chartexample/DynamicalAddingActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/DynamicalAddingActivity.kt index 8a19906494..69c6a06932 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/DynamicalAddingActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/DynamicalAddingActivity.kt @@ -44,7 +44,7 @@ class DynamicalAddingActivity : DemoBase(), OnChartValueSelectedListener { private val colors: IntArray = ColorTemplate.VORDIPLOM_COLORS private fun addEntry() { - var data = binding.chart1.data + var data = binding.chart1.getData() if (data == null) { data = LineData() @@ -81,7 +81,7 @@ class DynamicalAddingActivity : DemoBase(), OnChartValueSelectedListener { } private fun removeLastEntry() { - val data = binding.chart1.data + val data = binding.chart1.getData() if (data != null) { val set = data.getDataSetByIndex(0) @@ -100,7 +100,7 @@ class DynamicalAddingActivity : DemoBase(), OnChartValueSelectedListener { } private fun addDataSet() { - val data = binding.chart1.data + val data = binding.chart1.getData() if (data == null) { binding.chart1.setData(LineData()) @@ -136,7 +136,7 @@ class DynamicalAddingActivity : DemoBase(), OnChartValueSelectedListener { } private fun removeDataSet() { - val data = binding.chart1.data + val data = binding.chart1.getData() if (data != null) { data.removeDataSet(data.getDataSetByIndex(data.dataSetCount - 1)) diff --git a/app/src/main/kotlin/info/appdev/chartexample/FilledLineActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/FilledLineActivity.kt index 75f358e5c8..13ff978ab8 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/FilledLineActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/FilledLineActivity.kt @@ -86,14 +86,13 @@ class FilledLineActivity : DemoBase() { val set1: LineDataSet val set2: LineDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.lineData.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as LineDataSet - set2 = binding.chart1.data!!.getDataSetByIndex(1) as LineDataSet + set1 = binding.chart1.lineData.getDataSetByIndex(0) as LineDataSet + set2 = binding.chart1.lineData.getDataSetByIndex(1) as LineDataSet set1.entries = valuesArray1 set2.entries = valuesArray2 - binding.chart1.data!!.notifyDataChanged() + binding.chart1.lineData.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { // create a dataset and give it a type diff --git a/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarChartActivity.kt index 7840194b8b..24af475b0b 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarChartActivity.kt @@ -114,12 +114,12 @@ class HorizontalBarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartV val set1: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set1 = BarDataSet(values, "DataSet 1") @@ -152,21 +152,21 @@ class HorizontalBarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartV } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { data -> + binding.chart1.barData?.let { data -> data.isHighlightEnabled = !data.isHighlightEnabled binding.chart1.invalidate() } @@ -184,7 +184,7 @@ class HorizontalBarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartV } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() @@ -237,7 +237,7 @@ class HorizontalBarChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartV binding.chart1.getBarBounds(entry as BarEntry, bounds) val position = binding.chart1.getPosition( - entry, binding.chart1.data!!.getDataSetByIndex(highlight.dataSetIndex)?.axisDependency + entry, binding.chart1.barData!!.getDataSetByIndex(highlight.dataSetIndex)?.axisDependency ) Timber.i(bounds.toString()) diff --git a/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt index 6e886f04a8..5adc18e5c1 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/HorizontalBarNegativeChartActivity.kt @@ -111,12 +111,12 @@ class HorizontalBarNegativeChartActivity : DemoBase(), OnSeekBarChangeListener, val set1: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set1 = BarDataSet(values, "DataSet 1") @@ -149,21 +149,21 @@ class HorizontalBarNegativeChartActivity : DemoBase(), OnSeekBarChangeListener, } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -181,7 +181,7 @@ class HorizontalBarNegativeChartActivity : DemoBase(), OnSeekBarChangeListener, } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() @@ -234,7 +234,7 @@ class HorizontalBarNegativeChartActivity : DemoBase(), OnSeekBarChangeListener, binding.chart1.getBarBounds(entry as BarEntry, bounds) val position = binding.chart1.getPosition( - entry, binding.chart1.data!!.getDataSetByIndex(highlight.dataSetIndex)?.axisDependency + entry, binding.chart1.barData!!.getDataSetByIndex(highlight.dataSetIndex)?.axisDependency ) Timber.i("bounds $bounds") diff --git a/app/src/main/kotlin/info/appdev/chartexample/InvertedLineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/InvertedLineChartActivity.kt index 12b4f746ee..ae95064133 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/InvertedLineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/InvertedLineChartActivity.kt @@ -133,28 +133,28 @@ class InvertedLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.lineData.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/LineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/LineChartActivity.kt index f89290407f..9e03f2cd43 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/LineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/LineChartActivity.kt @@ -155,42 +155,42 @@ class LineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelec } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { set -> set.isDrawValues = !set.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled binding.chart1.invalidate() } } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled binding.chart1.invalidate() } } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.map { it as LineDataSet }?.forEach { set -> + binding.chart1.getData()?.dataSets?.map { it as LineDataSet }?.forEach { set -> set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } binding.chart1.invalidate() } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.map { it as LineDataSet }?.forEach { set -> + binding.chart1.getData()?.dataSets?.map { it as LineDataSet }?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) LineDataSet.Mode.LINEAR else @@ -200,7 +200,7 @@ class LineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelec } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.map { it as LineDataSet }?.forEach { set -> + binding.chart1.getData()?.dataSets?.map { it as LineDataSet }?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.STEPPED) LineDataSet.Mode.LINEAR else @@ -210,7 +210,7 @@ class LineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelec } R.id.actionToggleHorizontalCubic -> { - binding.chart1.data?.dataSets?.map { it as LineDataSet }?.forEach { set -> + binding.chart1.getData()?.dataSets?.map { it as LineDataSet }?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.HORIZONTAL_BEZIER) LineDataSet.Mode.LINEAR else diff --git a/app/src/main/kotlin/info/appdev/chartexample/LineChartDualAxisActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/LineChartDualAxisActivity.kt index 25746c0c41..49afb8fab8 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/LineChartDualAxisActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/LineChartDualAxisActivity.kt @@ -138,16 +138,15 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa val set2: LineDataSet val set3: LineDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0 + if (binding.chart1.lineData.dataSetCount > 0 ) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as LineDataSet - set2 = binding.chart1.data!!.getDataSetByIndex(1) as LineDataSet - set3 = binding.chart1.data!!.getDataSetByIndex(2) as LineDataSet + set1 = binding.chart1.lineData.getDataSetByIndex(0) as LineDataSet + set2 = binding.chart1.lineData.getDataSetByIndex(1) as LineDataSet + set3 = binding.chart1.lineData.getDataSetByIndex(2) as LineDataSet set1.entries = values1 set2.entries = values2 set3.entries = values3 - binding.chart1.data!!.notifyDataChanged() + binding.chart1.lineData.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { // create a dataset and give it a type @@ -217,35 +216,35 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawValues = !set.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } binding.chart1.invalidate() } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) LineDataSet.Mode.LINEAR else @@ -255,7 +254,7 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.STEPPED) LineDataSet.Mode.LINEAR else @@ -265,7 +264,7 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa } R.id.actionToggleHorizontalCubic -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.lineMode = if (set.lineMode == LineDataSet.Mode.HORIZONTAL_BEZIER) LineDataSet.Mode.LINEAR else @@ -325,7 +324,7 @@ class LineChartDualAxisActivity : DemoBase(), OnSeekBarChangeListener, OnChartVa override fun onValueSelected(entry: Entry, highlight: Highlight) { Timber.i(entry.toString()) - binding.chart1.data!!.getDataSetByIndex(highlight.dataSetIndex)?.let { + binding.chart1.lineData.getDataSetByIndex(highlight.dataSetIndex)?.let { binding.chart1.centerViewToAnimated(entry.x, entry.y, it.axisDependency, 500) //chart.zoomAndCenterAnimated(2.5f, 2.5f, e.getX(), e.getY(), chart.getData().getDataSetByIndex(dataSetIndex) // .getAxisDependency(), 1000); diff --git a/app/src/main/kotlin/info/appdev/chartexample/LineChartTimeActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/LineChartTimeActivity.kt index 4d2742b55d..eb80d58d83 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/LineChartTimeActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/LineChartTimeActivity.kt @@ -158,35 +158,35 @@ class LineChartTimeActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.lineData.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } binding.chart1.invalidate() } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) set.lineMode = LineDataSet.Mode.LINEAR else @@ -196,7 +196,7 @@ class LineChartTimeActivity : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> if (set.lineMode == LineDataSet.Mode.STEPPED) set.lineMode = LineDataSet.Mode.LINEAR else diff --git a/app/src/main/kotlin/info/appdev/chartexample/MultiLineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/MultiLineChartActivity.kt index d2a2ef938a..4d1fb0dece 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/MultiLineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/MultiLineChartActivity.kt @@ -130,7 +130,7 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.lineData.dataSets?.forEach { set -> set.isDrawValues = !set.isDrawValues } binding.chart1.invalidate() @@ -149,21 +149,21 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { data -> + binding.chart1.getData()?.let { data -> data.isHighlightEnabled = !data.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> if (set is LineDataSet) { set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } @@ -172,7 +172,7 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.forEach { iSet -> + binding.chart1.getData()?.dataSets?.forEach { iSet -> val set = iSet as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) LineDataSet.Mode.LINEAR @@ -183,7 +183,7 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.forEach { iSet -> + binding.chart1.getData()?.dataSets?.forEach { iSet -> val set = iSet as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.STEPPED) LineDataSet.Mode.LINEAR @@ -194,7 +194,7 @@ class MultiLineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartGestu } R.id.actionToggleHorizontalCubic -> { - binding.chart1.data?.dataSets?.forEach { iSet -> + binding.chart1.getData()?.dataSets?.forEach { iSet -> val set = iSet as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.HORIZONTAL_BEZIER) LineDataSet.Mode.LINEAR diff --git a/app/src/main/kotlin/info/appdev/chartexample/PieChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/PieChartActivity.kt index 15f99a2a9c..064b8b992b 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/PieChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/PieChartActivity.kt @@ -167,14 +167,14 @@ class PieChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSelect } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/PieChartRoundedActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/PieChartRoundedActivity.kt index c6dc0e9765..dbaf606b0e 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/PieChartRoundedActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/PieChartRoundedActivity.kt @@ -171,14 +171,14 @@ class PieChartRoundedActivity : DemoBase(), OnSeekBarChangeListener, OnChartValu } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/PiePolylineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/PiePolylineChartActivity.kt index e9e654e7bc..2d6f97f721 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/PiePolylineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/PiePolylineChartActivity.kt @@ -160,7 +160,7 @@ class PiePolylineChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartVal } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/RadarChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/RadarChartActivity.kt index 2d5f2fc742..b75c4d9c67 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/RadarChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/RadarChartActivity.kt @@ -156,14 +156,14 @@ class RadarChartActivity : DemoBase() { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -175,14 +175,14 @@ class RadarChartActivity : DemoBase() { } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleHighlightCircle -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { set -> set.isDrawHighlightCircleEnabled = !set.isDrawHighlightCircleEnabled } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/RealtimeLineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/RealtimeLineChartActivity.kt index b5ec9ae472..ac4b6e1518 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/RealtimeLineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/RealtimeLineChartActivity.kt @@ -83,36 +83,34 @@ class RealtimeLineChartActivity : DemoBase(), OnChartValueSelectedListener { } private fun addEntry() { - val data = binding.chart1.data + val data = binding.chart1.lineData - if (data != null) { - var set = data.getDataSetByIndex(0) + var set = data.getDataSetByIndex(0) - // set.addEntry(...); // can be called as well - if (set == null) { - set = createSet() - data.addDataSet(set) - } + // set.addEntry(...); // can be called as well + if (set == null) { + set = createSet() + data.addDataSet(set) + } - val cycleValue = (set.entryCount % 100.0).toInt() - data.addEntry(Entry(set.entryCount.toFloat(), (sampleValues[cycleValue]!!.toFloat() * 40) + 30f), 0) - data.notifyDataChanged() + val cycleValue = (set.entryCount % 100.0).toInt() + data.addEntry(Entry(set.entryCount.toFloat(), (sampleValues[cycleValue]!!.toFloat() * 40) + 30f), 0) + data.notifyDataChanged() - // let the chart know it's data has changed - binding.chart1.notifyDataSetChanged() + // let the chart know it's data has changed + binding.chart1.notifyDataSetChanged() - // limit the number of visible entries - binding.chart1.setVisibleXRangeMaximum(120f) + // limit the number of visible entries + binding.chart1.setVisibleXRangeMaximum(120f) - // chart.setVisibleYRange(30, AxisDependency.LEFT); + // chart.setVisibleYRange(30, AxisDependency.LEFT); - // move to the latest entry - binding.chart1.moveViewToX(data.dataSetCount.toFloat()) + // move to the latest entry + binding.chart1.moveViewToX(data.dataSetCount.toFloat()) - // this automatically refreshes the chart (calls invalidate()) - // chart.moveViewTo(data.getXValCount()-7, 55f, - // AxisDependency.LEFT); - } + // this automatically refreshes the chart (calls invalidate()) + // chart.moveViewTo(data.getXValCount()-7, 55f, + // AxisDependency.LEFT); } private fun createSet(): LineDataSet { diff --git a/app/src/main/kotlin/info/appdev/chartexample/ScatterChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/ScatterChartActivity.kt index b8c1066d7f..0063009272 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/ScatterChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/ScatterChartActivity.kt @@ -140,14 +140,14 @@ class ScatterChartActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSe } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.scatterData?.dataSets?.forEach { set -> set.isDrawValues = !set.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.scatterData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/SpecificPositionsLineChartActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/SpecificPositionsLineChartActivity.kt index c7c13129ea..3b71cf6c70 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/SpecificPositionsLineChartActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/SpecificPositionsLineChartActivity.kt @@ -129,28 +129,29 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.getData()?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() } R.id.actionToggleFilled -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.getData()?.dataSets?.forEach { + val set = it as LineDataSet set.isDrawFilledEnabled = !set.isDrawFilledEnabled } binding.chart1.invalidate() } R.id.actionToggleCircles -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { val set = it as LineDataSet set.isDrawCirclesEnabled = !set.isDrawCirclesEnabled } @@ -158,7 +159,7 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, } R.id.actionToggleCubic -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.CUBIC_BEZIER) LineDataSet.Mode.LINEAR else LineDataSet.Mode.CUBIC_BEZIER } @@ -166,7 +167,7 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, } R.id.actionToggleStepped -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.STEPPED) LineDataSet.Mode.LINEAR else LineDataSet.Mode.STEPPED } @@ -174,7 +175,7 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, } R.id.actionToggleHorizontalCubic -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.getData()?.dataSets?.forEach { val set = it as LineDataSet set.lineMode = if (set.lineMode == LineDataSet.Mode.HORIZONTAL_BEZIER) LineDataSet.Mode.LINEAR else LineDataSet.Mode.HORIZONTAL_BEZIER } @@ -232,7 +233,7 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, val `val` = (sampleValues[i]!!.toFloat() * range) + 3 values.add(Entry(i.toFloat(), `val`)) } - binding.chart1.data?.let { + binding.chart1.getData()?.let { if (it.dataSetCount > 0) { val set1 = it.getDataSetByIndex(0) as LineDataSet set1.entries = values @@ -276,7 +277,7 @@ class SpecificPositionsLineChartActivity : DemoBase(), OnSeekBarChangeListener, val data = LineData(dataSets) // set data - binding.chart1.data = data + binding.chart1.setData(data) } override fun onChartGestureStart(me: MotionEvent, lastPerformedGesture: ChartGesture?) { diff --git a/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivity.kt index 3f28bff1f8..bc223b3a64 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivity.kt @@ -109,11 +109,11 @@ class StackedBarActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSele val set1: BarDataSet - if (binding.chart1.data != null && - binding.chart1.data!!.dataSetCount > 0) { - set1 = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet + if (binding.chart1.barData != null && + binding.chart1.barData!!.dataSetCount > 0) { + set1 = binding.chart1.barData!!.getDataSetByIndex(0) as BarDataSet set1.entries = values - binding.chart1.data!!.notifyDataChanged() + binding.chart1.barData?.notifyDataChanged() binding.chart1.notifyDataSetChanged() } else { set1 = BarDataSet(values, "Statistics Vienna 2014") @@ -149,21 +149,21 @@ class StackedBarActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSele } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -181,7 +181,7 @@ class StackedBarActivity : DemoBase(), OnSeekBarChangeListener, OnChartValueSele } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivityNegative.kt b/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivityNegative.kt index e6eecf0ae6..09c5f9ec3d 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivityNegative.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/StackedBarActivityNegative.kt @@ -129,21 +129,21 @@ class StackedBarActivityNegative : DemoBase(), OnChartValueSelectedListener { } R.id.actionToggleValues -> { - binding.chart1.data?.dataSets?.forEach { + binding.chart1.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } binding.chart1.invalidate() } R.id.actionToggleIcons -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> set.isDrawIcons = !set.isDrawIcons } binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - binding.chart1.data?.let { + binding.chart1.barData?.let { it.isHighlightEnabled = !it.isHighlightEnabled } binding.chart1.invalidate() @@ -165,7 +165,7 @@ class StackedBarActivityNegative : DemoBase(), OnChartValueSelectedListener { } R.id.actionToggleBarBorders -> { - binding.chart1.data?.dataSets?.forEach { set -> + binding.chart1.barData?.dataSets?.forEach { set -> (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } binding.chart1.invalidate() diff --git a/app/src/main/kotlin/info/appdev/chartexample/compose/HorizontalBarComposeActivity.kt b/app/src/main/kotlin/info/appdev/chartexample/compose/HorizontalBarComposeActivity.kt index a0fd04a6ca..78b018def3 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/compose/HorizontalBarComposeActivity.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/compose/HorizontalBarComposeActivity.kt @@ -272,7 +272,7 @@ class HorizontalBarComposeActivity : DemoBaseCompose() { val bounds = RectF() chart.getBarBounds(entry as BarEntry, bounds) - val data = chart.data + val data = chart.barData if (data != null) { val position = chart.getPosition( entry, data.getDataSetByIndex(highlight.dataSetIndex)?.axisDependency @@ -348,7 +348,7 @@ class HorizontalBarComposeActivity : DemoBaseCompose() { } val set1: BarDataSet - val chartData = localChart.data + val chartData = localChart.barData if (chartData != null && chartData.dataSetCount > 0) { set1 = chartData.getDataSetByIndex(0) as BarDataSet @@ -367,7 +367,7 @@ class HorizontalBarComposeActivity : DemoBaseCompose() { data.setValueTextSize(10f) data.setValueTypeface(tfLight) data.barWidth = barWidth - localChart.data = data + localChart.setData(data) } localChart.setFitBars(true) @@ -376,7 +376,7 @@ class HorizontalBarComposeActivity : DemoBaseCompose() { private fun toggleValues() { chart?.let { - it.data?.dataSets?.forEach { + it.barData?.dataSets?.forEach { it.isDrawValues = !it.isDrawValues } it.invalidate() @@ -384,46 +384,36 @@ class HorizontalBarComposeActivity : DemoBaseCompose() { } private fun toggleIcons() { - chart?.let { - val sets = it.data?.dataSets ?: return - for (iSet in sets) { - iSet.isDrawIcons = !iSet.isDrawIcons - } - it.invalidate() + val sets = chart?.barData?.dataSets ?: return + for (iSet in sets) { + iSet.isDrawIcons = !iSet.isDrawIcons } + chart?.invalidate() } private fun toggleHighlight() { - chart?.let { - val chartData = it.data - if (chartData != null) { - chartData.isHighlightEnabled = !chartData.isHighlightEnabled - it.invalidate() - } + val chartData = chart?.barData + if (chartData != null) { + chartData.isHighlightEnabled = !chartData.isHighlightEnabled + chart?.invalidate() } } private fun togglePinchZoom() { - chart?.let { - it.setPinchZoom(!it.isPinchZoomEnabled) - it.invalidate() - } + chart?.isPinchZoomEnabled?.let { chart?.setPinchZoom(!it) } + chart?.invalidate() } private fun toggleAutoScaleMinMax() { - chart?.let { - it.isAutoScaleMinMaxEnabled = !it.isAutoScaleMinMaxEnabled - it.notifyDataSetChanged() - } + chart?.isAutoScaleMinMaxEnabled?.let { chart?.isAutoScaleMinMaxEnabled = !it } + chart?.notifyDataSetChanged() } private fun toggleBarBorders() { - chart?.let { - for (set in it.data?.dataSets ?: return) { - (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f - } - it.invalidate() + for (set in chart?.barData?.dataSets ?: return) { + (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f } + chart?.invalidate() } private fun animateX() {