1
votes

Je ne peux pas convertir parfaitement Java en Kotlin

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 commentaires

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"


4 Réponses :


2
votes

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
}
}


0 commentaires

0
votes

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 Convertir un seul fichier java en kotlin Convertir le projet java en kotlin


0 commentaires

0
votes

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)
  }
}


0 commentaires

0
votes

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)
    }
}


0 commentaires