Je suis nouveau sur Kotlin et Java.
J'ai créé une calculatrice de notes GPA et je les ai montrées avec un graphique sur Android Studio avec Kotlin.
J'utilise hellochart lib.
Je ne peux pas convertir l'exemple de java en kotlin.
c'est le lien de l'exemple que j'ai essayé d'utiliser https://www.codingdemos.com/draw-android-line-chart/ ?
package com.codingdemos.codingdemos; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; import lecho.lib.hellocharts.model.Axis; import lecho.lib.hellocharts.model.AxisValue; import lecho.lib.hellocharts.model.Line; import lecho.lib.hellocharts.model.LineChartData; import lecho.lib.hellocharts.model.PointValue; import lecho.lib.hellocharts.model.Viewport; import lecho.lib.hellocharts.view.LineChartView; public class MainActivity extends AppCompatActivity { LineChartView lineChartView; String[] axisData = {"Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept","Oct", "Nov", "Dec"}; int[] yAxisData = {50, 20, 15, 30, 20, 60, 15, 40, 45, 10, 90, 18}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lineChartView = findViewById(R.id.chart); List yAxisValues = new ArrayList(); List axisValues = new ArrayList(); Line line = new Line(yAxisValues).setColor(Color.parseColor("#9C27B0")); for (int i = 0; i < axisData.length; i++) { axisValues.add(i, new AxisValue(i).setLabel(axisData[i])); } for (int i = 0; i < yAxisData.length; i++) { yAxisValues.add(new PointValue(i, yAxisData[i])); } List lines = new ArrayList(); lines.add(line); LineChartData data = new LineChartData(); data.setLines(lines); Axis axis = new Axis(); axis.setValues(axisValues); axis.setTextSize(16); axis.setTextColor(Color.parseColor("#03A9F4")); data.setAxisXBottom(axis); Axis yAxis = new Axis(); yAxis.setName("Sales in millions"); yAxis.setTextColor(Color.parseColor("#03A9F4")); yAxis.setTextSize(16); data.setAxisYLeft(yAxis); lineChartView.setLineChartData(data); Viewport viewport = new Viewport(lineChartView.getMaximumViewport()); viewport.top = 110; lineChartView.setMaximumViewport(viewport); lineChartView.setCurrentViewport(viewport); } }
Veuillez m'aider à le convertir en Kotlin sans aucune erreur :(. Merci
4 Réponses :
Essayez ce code. J'espère que cela fonctionne pour vous
class MainActivity : AppCompatActivity() { private var axisData: Array<String> = arrayOf( "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" ) private var yAxisData: IntArray = intArrayOf(50, 20, 15, 30, 20, 60, 15, 40, 45, 10, 90, 18) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val yAxisValues:ArrayList<PointValue> = ArrayList() val axisValues:ArrayList<AxisValue> = ArrayList() val line = Line(yAxisValues).setColor(Color.parseColor("#9C27B0")) for (i in axisData.indices) { axisValues.add(i, AxisValue(i.toFloat()).setLabel(axisData[i])) } for (i in yAxisData.indices) { yAxisValues.add(PointValue(i.toFloat(), yAxisData[i].toFloat())) } val lines:ArrayList<Line> = ArrayList() lines.add(line) val data = LineChartData() data.lines = lines val axis = Axis() axis.values = axisValues axis.textSize = 16 axis.textColor = Color.parseColor("#03A9F4") data.axisXBottom = axis val yAxis = Axis() yAxis.name = "Sales in millions" yAxis.textColor = Color.parseColor("#03A9F4") yAxis.textSize = 16 data.axisYLeft = yAxis chart.lineChartData = data val viewport = Viewport(chart.maximumViewport) viewport.top = 110f chart.maximumViewport = viewport chart.currentViewport = viewport } }
Nous pouvons facilement convertir un projet java en Kotlin Suivez ces étapes
Convertir un seul fichier java en kotlin
ouvrir la classe java / sélectionner dans le projet> Aller à la barre d'outils> cliquer sur Code> sélectionner Convertir le fichier java en fichier kotlin
Convertir le projet java en kotlin
Sélectionnez le menu latéral du formulaire d'application (voir la capture d'écran)> Allez dans la barre d'outils> Cliquez sur Code> Sélectionnez Convertir le fichier java en fichier kotlin
La touche de raccourci est: Ctrl + Alt + Maj + K
Un certain temps dans le fichier kotlin affiche une erreur, pour résoudre ces erreurs, cliquez sur la ligne d'erreur et appuyez sur Alt + Entrée pour afficher le message d'erreur avec des conseils de résolution
Habituellement, j'ai l'habitude de convertir du code JAVA en kotlin en utilisant this
Sélectionnez la conversion de java (en haut à droite)
en utilisant ceci, votre activité principale ressemble à ceci.
package com.codingdemos.codingdemos import android.graphics.Color import android.os.Bundle import android.support.v7.app.AppCompatActivity import java.util.ArrayList import lecho.lib.hellocharts.model.Axis import lecho.lib.hellocharts.model.AxisValue import lecho.lib.hellocharts.model.Line import lecho.lib.hellocharts.model.LineChartData import lecho.lib.hellocharts.model.PointValue import lecho.lib.hellocharts.model.Viewport import lecho.lib.hellocharts.view.LineChartView class MainActivity:AppCompatActivity() { internal var lineChartView:LineChartView internal var axisData = arrayOf<String>("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec") internal var yAxisData = intArrayOf(50, 20, 15, 30, 20, 60, 15, 40, 45, 10, 90, 18) protected fun onCreate(savedInstanceState:Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) lineChartView = findViewById(R.id.chart) val yAxisValues = ArrayList() val axisValues = ArrayList() val line = Line(yAxisValues).setColor(Color.parseColor("#9C27B0")) for (i in axisData.indices) { axisValues.add(i, AxisValue(i).setLabel(axisData[i])) } for (i in yAxisData.indices) { yAxisValues.add(PointValue(i, yAxisData[i])) } val lines = ArrayList() lines.add(line) val data = LineChartData() data.setLines(lines) val axis = Axis() axis.setValues(axisValues) axis.setTextSize(16) axis.setTextColor(Color.parseColor("#03A9F4")) data.setAxisXBottom(axis) val yAxis = Axis() yAxis.setName("Sales in millions") yAxis.setTextColor(Color.parseColor("#03A9F4")) yAxis.setTextSize(16) data.setAxisYLeft(yAxis) lineChartView.setLineChartData(data) val viewport = Viewport(lineChartView.getMaximumViewport()) viewport.top = 110 lineChartView.setMaximumViewport(viewport) lineChartView.setCurrentViewport(viewport) } }
J'ai essayé de me convertir en Kotlin idiomatique ici -
class MainActivity : AppCompatActivity() { private val axisData = listOf( "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" ) private val yAxisData = listOf(50, 20, 15, 30, 20, 60, 15, 40, 45, 10, 90, 18) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val lineChartView = findViewById(R.id.chart) val axisValues = axisData.mapIndexed { i, data -> AxisValue(i).setLabel(data) } val yAxisValues = yAxisData.mapIndexed { i, data -> PointValue(i, data) } val line = Line(yAxisValues).setColor(Color.parseColor("#9C27B0")) val lines = listOf(line) val data = LineChartData() data.setLines(lines) val axis = Axis().apply { setValues(axisValues) setTextSize(16) setTextColor(Color.parseColor("#03A9F4")) } data.setAxisXBottom(axis) val yAxis = Axis().apply { setName("Sales in millions") setTextColor(Color.parseColor("#03A9F4")) setTextSize(16) } data.setAxisYLeft(yAxis) lineChartView.setLineChartData(data) val viewport = Viewport(lineChartView.getMaximumViewport()) viewport.top = 110 lineChartView.setMaximumViewport(viewport) lineChartView.setCurrentViewport(viewport) } }
Le code Java complet se trouve au bas du lien que j'ai posté ci-dessus si je copie un code incorrect.
Dans ToolBar, sélectionnez Code -> Convertir Java en Kotlin
@shadow parfois cela ne fonctionne pas correctement, par exemple avec une sécurité nulle, mais c'est un excellent point de départ
@LeoLeontev oui parce qu'il ne sait pas lequel est var ou lequel est val.Mais convertir comme ça peut gagner beaucoup de temps et il peut être préférable de poser la question comme "comment corriger l'erreur"