随着谷歌提出Kotlin语言来进行Android开发,自己的心也逐渐躁动起来。
于是赶紧打开Android Studio,由于是3.0,所以直接可以使用Kotlin。
那么作为一个Android开发者,第一步就是创建HelloWorld程序:
1.直接在MainActivity中使用Ctrl+Alt+Shift+K,将代码转换为Kotlin形式
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
由上可见,类与类之间的继承关系只需要一个“:”表示,函数用fun标识,java里的@Override直接写在了函数之前。
2.按照Android的开发思路,下一步我要写一个TextView来显示“HelloWorld”,那么在Kotlin里该如何findviewbyId呢?
apply plugin: 'kotlin-android-extensions'
只需要在app的gradle文件中添加这行。
xml文件:
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Hello World!" />
MainActivity.kt:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvName.text = "Hello Kotlin!"
}
}
这样就大功告成了!不需要findviewbyid,可以直接在kt文件中调用xml文件的id,连变量的定义都省去了,是不是很方便?
3.稍复杂又常见的需求,使用ListView展示数据:
看完了HelloWorld的展示,那么我们要来看一下在开发中,经常遇到的情况(列表展示)。
ListView可以和之前的TextView一样,直接用xml文件中的id得到实例,那么现在我们来创建一个Adapter:
在Kotlin中,var用来代表可变变量,val用来代表不可变变量(常量,final),
所以:
val adapter = ArrayAdapter(
this,
android.R.layout.simple_list_item_1,
arrayOf("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"));
我们得到了一个简单的adapter。你会发现我们最常见的new没有了。原来Kotlin语法中,创建新的对象,只需要直接写出他的构造方法,不需要new操作符,这样看起来简洁很多。
并且在ArrayAdapter的最后一个参数,java中的写法是一个String数组(new String[]),而在Kotlin中,arrayOf即可替代该写法。
那么该如何将这个adapter设置给ListView呢?
lvMain.adapter = adapter;
lvMain.setOnItemClickListener { adapterView, view, position, l ->
Toast.makeText(this, "$position", Toast.LENGTH_SHORT).show();
Log.i("Main","$position");
}
由上可见是用赋值的形式。在写这里代码的时候,我发现ListView没有setAdapter的方法了,取而代之的是可以直接获取ListView的Adapter引用,用来赋值。
而监听器的写法,如果熟悉Lambda表达式的朋友一定很熟悉,是通过推算来代替了匿名内部类。
而显示和打印的字符串,用了$position,而不是java的String.valueOf(position)或者position+""。
$符号其实就是取得后面引用的值。
看到这里,是不是对Kotlin有了一个初步了解呢?你会发现Kotlin很简单,代码简洁性也很高,相比java,Kotlin的代码风格更符合人的思维。
那么最后,总结一下:
1.Kotlin是弱类型语言,变量用var表示,常量用val表示
2.依赖插件,可以直接用xml的控件Id来获取控件的引用
3.Kotlin中的继承关系,用":"来表示,前者继承后者,等同于Java中的extends
4.Kotlin中的函数,用fun来表示
5.Kotlin中如果想要创建一个新的对象,直接调用类的构造方法,不需要new操作符
6.Kotlin中的设置监听方法,与lambda表达式相似,无需匿名内部类