[英]I can't convert Java to Kotlin perfectly
我是 Kotlin 和 Java 的新手。
我一直在構建 GPA 成績計算器,並在 Android Studio 和 Kotlin 上用圖表顯示它們。
我使用 hellochart 庫。
我無法將示例從 java 轉換為 kotlin。
這是我嘗試使用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);
}
}
請幫我將其轉換為 Kotlin 沒有錯誤:(。謝謝
試試這個代碼..希望它對你有用
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
}
}
我們可以輕松地將 java 項目轉換為 Kotlin 遵循以下步驟
將單個 java 文件轉換為 kotlin
open java class / select from project > Go to tool Bar > click on Code > select Convert java file to kotlin file
將 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
快捷鍵是:Ctrl+Alt+Shift+K
有時在 kotlin 文件中顯示一些錯誤,要解決這些錯誤,請單擊錯誤行並按Alt + Enter以顯示帶有解決提示的錯誤消息
通常,我習慣使用這個將 JAVA 代碼轉換為 kotlin
Select 從 java 轉換(從右上角)
使用這個你的 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)
}
}
我試圖在這里轉換為慣用的 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.