[英]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以显示带有解决提示的错误消息
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.