简体   繁体   English

我无法完美地将 Java 转换为 Kotlin

[英]I can't convert Java to Kotlin perfectly

I'm new to Kotlin and Java.我是 Kotlin 和 Java 的新手。

I've been building GPA grade calculator and showing them with graph on Android Studio with Kotlin.我一直在构建 GPA 成绩计算器,并在 Android Studio 和 Kotlin 上用图表显示它们。

I use hellochart lib.我使用 hellochart 库。

I can't convert the example from java to kotlin.我无法将示例从 java 转换为 kotlin。

this is the link of example I tried to use https://www.codingdemos.com/draw-android-line-chart/ ?这是我尝试使用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);
    }

}

Please help me to convert it to Kotlin without no error:(. Thankyou请帮我将其转换为 Kotlin 没有错误:(。谢谢

Try this code.. Hope it works for you试试这个代码..希望它对你有用

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

We can easily Convert java project to Kotlin Follow these steps我们可以轻松地将 java 项目转换为 Kotlin 遵循以下步骤

Convert Single java file to kotlin将单个 java 文件转换为 kotlin

open java class / select from project > Go to tool Bar > click on Code > select Convert java file to kotlin file open java class / select from project > Go to tool Bar > click on Code > select Convert java file to kotlin file

Convert java project into kotlin将 java 项目转换为 kotlin

Select app form side menu (see in screen shot) >Go to tool bar > Click on Code > Select Convert java file to kotlin file Select app form side menu (see in screen shot) >Go to tool bar > Click on Code > Select Convert java file to kotlin file

Short cut key is: Ctrl + Alt + Shift+K快捷键是:Ctrl+Alt+Shift+K

Some time in kotlin file show some error, to resolve these error click on error line and press Alt + Enter to display error message with resolve hints有时在 kotlin 文件中显示一些错误,要解决这些错误,请单击错误行并按Alt + Enter以显示带有解决提示的错误消息将单个 java 文件转换为 kotlin 将java项目转换为kotlin

Usually, I habited to convert JAVA code to kotlin using this通常,我习惯使用这个将 JAVA 代码转换为 kotlin

Select convert from java (from the top right side) Select 从 java 转换(从右上角)

using this your MainActivity looks like this.使用这个你的 MainActivity 看起来像这样。

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

I've tried to convert to idiomatic Kotlin here-我试图在这里转换为惯用的 Kotlin -

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM