写在前面的话
google大会宣布kotlin成为android官方语言后,很多人都开始尝试接触kotlin,其实早在去年我就了解了一下kotlin,因为作为一个android开发者,突然发现除了java还有另一门语言可以实现android开发,处于好奇肯定会去了解一下的,但由于工作关系,并没有去深入了解,只是大概的看了一下它的语法。最近几天,周围的朋友都在开始讨论kotlin,于是乎又开始来研究kotlin。本文不会涉及到kotlin的相关配置,只是简单的把自己写的一个小demo拿出来说一说。
这篇文章主要说什么?
我们都知道,一个app最不可缺少的就是列表页面,所以我决定先从实现一个列表页面开始来学习kotlin,这里我使用的是RecyclerView和一个强大的开源库BaseRecyclerViewAdapterHelper来实现一个列表数据的展示、下拉刷新上拉加载以及item的点击事件。
正文
一、新建一个demo工程(如何配置kotlin网上已经有很多教程了,这里我就不多说了,如果使用的是android studio3.0那就不需要配置可以直接使用,因为已经支持kotlin语言编程了)
二、新建工程后得到的MainActivity仍然是java代码,这个时候我们可以使用编译器来自动修改成kotlin代码。(打开MainActivity文件,点击Code-->Convert Java File to Kotlin File)此时编译器会帮我们自动将原来的java文件转换成Kotlin文件,很方便有木有,而且这也有个很大的好处就是你可以通过这个转换来观察java和kotlin之间的差别从而更好的学习kotlin。
以下是MainActi的代码,只是实现了点击一个按钮跳转到另一个页面。代码是直接使用编译器转成kotlin代码的
三、接下来我们新建一个Kotlin文件命名为etx,用来实现一个扩展函数,用来显示Toast。在etx中加入如下代码
fun Context.toast(msg:String,length:Int = Toast.LENGTH_SHORT){
Toast.makeText(this,msg,length).show()
}
这样我们在含有Context的类中都可以使用toast("message")来弹出一个Toast了。很方便有木有。
四、接下来先看下RecyclerView的adapter。
这个adapter也很简单 通过继承BaseQuickAdapter,然后实现convert方法,给TextView设置文本,给Imageview设置图片。这里的两个叹号的意思是helper不能为空,如果为空的话会抛出异常的。helper.addOnclickListerner()是为item上的子控件设置点击事件的监听,待会在activity中会实现点击事件的处理。使用BaseRecyclerViewAdapterHelper实现一个RecyclerView的Adapter是不是很简单
五、接下来是KotlinActivity
首先定义几个我们需要用到的变量(列表的数据源,adapter,handler)
然后给数据源添加一些数据进去,这里和java的for循环还是有些差别的,我们是这样给list添加一些数据进去 (0..20).map{DataEntity("kotlin"+it)}.forEach{list.add(it)} DataEntity是我新建的一个实体类,里面就一个name的属性,代码也很简单,不需要像java那样提供get/set方法
data class DataEntity(varname:String) 没错,这样就定义好了一个实体类。真的很简单。这样,我们就给list添加了21条(注:这里0..20是从0开始20结束,所以一共是21条)数据了。
以上是给RecyclerView的item添加长按和短按事件以及item子控件的点击事件,这里有用到lamda表达式,其中出现的下划线的意思是当前的参数没有使用,可以用下划线来代替。when表达式其实就是类似于java中的switch,但是使用起来比switch要方便很多。
以上是上拉加载和下拉刷新。实现的方法也很简单,就不多说了。
总结:
使用kotlin后,发现kotlin比java确实要简化很多。网上说的用kotlin可以简化三倍的代码,我觉得这话虽然有点夸张,但也确实说明了kotlin的简洁。相信在使用了kotlin后,你也会被它深深吸引的,而且最重要的一点是它可以和java无缝调用。