From 00d54fe93097183b728e84c53216fa7699dab586 Mon Sep 17 00:00:00 2001 From: Hannes Achleitner Date: Mon, 15 Dec 2025 06:29:20 +0100 Subject: [PATCH] View binding --- .../chartexample/BarChartActivitySinus.kt | 97 +++++++++---------- 1 file changed, 45 insertions(+), 52 deletions(-) diff --git a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt index 5f9be80fec..ebeb252de2 100644 --- a/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt +++ b/app/src/main/kotlin/info/appdev/chartexample/BarChartActivitySinus.kt @@ -9,60 +9,53 @@ import android.view.Menu import android.view.MenuItem import android.widget.SeekBar import android.widget.SeekBar.OnSeekBarChangeListener -import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.net.toUri -import com.github.mikephil.charting.charts.BarChart import com.github.mikephil.charting.components.Legend import com.github.mikephil.charting.components.Legend.LegendForm import com.github.mikephil.charting.data.BarData import com.github.mikephil.charting.data.BarDataSet import com.github.mikephil.charting.data.BarEntry import com.github.mikephil.charting.utils.FileUtils +import info.appdev.chartexample.databinding.ActivityBarchartSinusBinding import info.appdev.chartexample.notimportant.DemoBase class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { - private var chart1: BarChart? = null - private var seekbarValues: SeekBar? = null - private var tvValueCount: TextView? = null private var dataSinus: MutableList? = null + private lateinit var binding: ActivityBarchartSinusBinding + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_barchart_sinus) + binding = ActivityBarchartSinusBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) dataSinus = FileUtils.loadBarEntriesFromAssets(assets, "othersine.txt") + binding.chart1.setDrawBarShadow(false) + binding.chart1.setDrawValueAboveBar(true) - tvValueCount = findViewById(R.id.tvValueCount) - - seekbarValues = findViewById(R.id.seekbarValues) - - chart1 = findViewById(R.id.chart1) - - chart1!!.setDrawBarShadow(false) - chart1!!.setDrawValueAboveBar(true) - - chart1!!.description.isEnabled = false + binding.chart1.description.isEnabled = false // if more than 60 entries are displayed in the chart, no values will be // drawn - chart1!!.setMaxVisibleValueCount(60) + binding.chart1.setMaxVisibleValueCount(60) // scaling can now only be done on x- and y-axis separately - chart1!!.setPinchZoom(false) + binding.chart1.setPinchZoom(false) // draw shadows for each bar that show the maximum value // chart.setDrawBarShadow(true); // chart.setDrawXLabels(false); - chart1!!.setDrawGridBackground(false) + binding.chart1.setDrawGridBackground(false) // chart.setDrawYLabels(false); - val xAxis = chart1!!.xAxis + val xAxis = binding.chart1.xAxis xAxis.isEnabled = false - val leftAxis = chart1!!.axisLeft + val leftAxis = binding.chart1.axisLeft leftAxis.typeface = tfLight leftAxis.setLabelCount(6, false) leftAxis.setAxisMinimum(-2.5f) @@ -70,7 +63,7 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { leftAxis.isGranularityEnabled = true leftAxis.setGranularity(0.1f) - val rightAxis = chart1!!.axisRight + val rightAxis = binding.chart1.axisRight rightAxis.setDrawGridLines(false) rightAxis.typeface = tfLight rightAxis.setLabelCount(6, false) @@ -78,10 +71,10 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { rightAxis.setAxisMaximum(2.5f) rightAxis.setGranularity(0.1f) - seekbarValues!!.setOnSeekBarChangeListener(this) - seekbarValues!!.progress = 150 // set data + binding.seekbarValues.setOnSeekBarChangeListener(this) + binding.seekbarValues.progress = 150 // set data - chart1!!.legend.apply { + binding.chart1.legend.apply { verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM horizontalAlignment = Legend.LegendHorizontalAlignment.LEFT orientation = Legend.LegendOrientation.HORIZONTAL @@ -92,7 +85,7 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { xEntrySpace = 4f } - chart1!!.animateXY(1500, 1500) + binding.chart1.animateXY(1500, 1500) } private fun setData(count: Int) { @@ -104,13 +97,13 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { val set: BarDataSet - if (chart1!!.data != null && - chart1!!.data!!.getDataSetCount() > 0 + if (binding.chart1.data != null && + binding.chart1.data!!.getDataSetCount() > 0 ) { - set = chart1!!.data!!.getDataSetByIndex(0) as BarDataSet + set = binding.chart1.data!!.getDataSetByIndex(0) as BarDataSet set.setEntries(entries) - chart1!!.data!!.notifyDataChanged() - chart1!!.notifyDataSetChanged() + binding.chart1.data!!.notifyDataChanged() + binding.chart1.notifyDataSetChanged() } else { set = BarDataSet(entries, "Sinus Function") set.setColor(Color.BLUE) @@ -122,7 +115,7 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { data.setDrawValues(false) data.barWidth = 0.8f - chart1!!.setData(data) + binding.chart1.setData(data) } override fun onCreateOptionsMenu(menu: Menu?): Boolean { @@ -139,53 +132,53 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { } R.id.actionToggleValues -> { - for (set in chart1!!.data!!.dataSets) set.setDrawValues(!set.isDrawValuesEnabled()) + for (set in binding.chart1.data!!.dataSets) set.setDrawValues(!set.isDrawValuesEnabled()) - chart1!!.invalidate() + binding.chart1.invalidate() } R.id.actionToggleHighlight -> { - if (chart1!!.data != null) { - chart1!!.data!!.isHighlightEnabled = !chart1!!.data!!.isHighlightEnabled() - chart1!!.invalidate() + if (binding.chart1.data != null) { + binding.chart1.data!!.isHighlightEnabled = !binding.chart1.data!!.isHighlightEnabled() + binding.chart1.invalidate() } } R.id.actionTogglePinch -> { - if (chart1!!.isPinchZoomEnabled) chart1!!.setPinchZoom(false) - else chart1!!.setPinchZoom(true) + if (binding.chart1.isPinchZoomEnabled) binding.chart1.setPinchZoom(false) + else binding.chart1.setPinchZoom(true) - chart1!!.invalidate() + binding.chart1.invalidate() } R.id.actionToggleAutoScaleMinMax -> { - chart1!!.isAutoScaleMinMaxEnabled = !chart1!!.isAutoScaleMinMaxEnabled - chart1!!.notifyDataSetChanged() + binding.chart1.isAutoScaleMinMaxEnabled = !binding.chart1.isAutoScaleMinMaxEnabled + binding.chart1.notifyDataSetChanged() } R.id.actionToggleBarBorders -> { - for (set in chart1!!.data!!.dataSets) (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f + for (set in binding.chart1.data!!.dataSets) (set as BarDataSet).barBorderWidth = if (set.barBorderWidth == 1f) 0f else 1f - chart1!!.invalidate() + binding.chart1.invalidate() } R.id.animateX -> { - chart1!!.animateX(2000) + binding.chart1.animateX(2000) } R.id.animateY -> { - chart1!!.animateY(2000) + binding.chart1.animateY(2000) } R.id.animateXY -> { - chart1!!.animateXY(2000, 2000) + binding.chart1.animateXY(2000, 2000) } R.id.actionSave -> { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { saveToGallery() } else { - requestStoragePermission(chart1) + requestStoragePermission(binding.chart1) } } } @@ -193,13 +186,13 @@ class BarChartActivitySinus : DemoBase(), OnSeekBarChangeListener { } override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { - tvValueCount!!.text = seekbarValues!!.progress.toString() + binding.tvValueCount.text = binding.seekbarValues.progress.toString() - setData(seekbarValues!!.progress) - chart1!!.invalidate() + setData(binding.seekbarValues.progress) + binding.chart1.invalidate() } - override fun saveToGallery() = saveToGallery(chart1, "BarChartActivitySinus") + override fun saveToGallery() = saveToGallery(binding.chart1, "BarChartActivitySinus") override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit