寫在前面的話
google大會宣布kotlin成為android官方語言后,很多人都開始嘗試接觸kotlin,其實早在去年我就了解了一下kotlin,因為作為一個android開發(fā)者,突然發(fā)現(xiàn)除了java還有另一門語言可以實現(xiàn)android開發(fā),處于好奇肯定會去了解一下的,但由于工作關(guān)系,并沒有去深入了解,只是大概的看了一下它的語法。最近幾天,周圍的朋友都在開始討論kotlin,于是乎又開始來研究kotlin。本文不會涉及到kotlin的相關(guān)配置,只是簡單的把自己寫的一個小demo拿出來說一說。
這篇文章主要說什么?
我們都知道,一個app最不可缺少的就是列表頁面,所以我決定先從實現(xiàn)一個列表頁面開始來學(xué)習(xí)kotlin,這里我使用的是RecyclerView和一個強大的開源庫BaseRecyclerViewAdapterHelper來實現(xiàn)一個列表數(shù)據(jù)的展示、下拉刷新上拉加載以及item的點擊事件。
正文
一、新建一個demo工程(如何配置kotlin網(wǎng)上已經(jīng)有很多教程了,這里我就不多說了,如果使用的是android studio3.0那就不需要配置可以直接使用,因為已經(jīng)支持kotlin語言編程了)
二、新建工程后得到的MainActivity仍然是java代碼,這個時候我們可以使用編譯器來自動修改成kotlin代碼。(打開MainActivity文件,點擊Code-->Convert Java File to Kotlin File)此時編譯器會幫我們自動將原來的java文件轉(zhuǎn)換成Kotlin文件,很方便有木有,而且這也有個很大的好處就是你可以通過這個轉(zhuǎn)換來觀察java和kotlin之間的差別從而更好的學(xué)習(xí)kotlin。
以下是MainActi的代碼,只是實現(xiàn)了點擊一個按鈕跳轉(zhuǎn)到另一個頁面。代碼是直接使用編譯器轉(zhuǎn)成kotlin代碼的

三、接下來我們新建一個Kotlin文件命名為etx,用來實現(xiàn)一個擴(kuò)展函數(shù),用來顯示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,然后實現(xiàn)convert方法,給TextView設(shè)置文本,給Imageview設(shè)置圖片。這里的兩個嘆號的意思是helper不能為空,如果為空的話會拋出異常的。helper.addOnclickListerner()是為item上的子控件設(shè)置點擊事件的監(jiān)聽,待會在activity中會實現(xiàn)點擊事件的處理。使用BaseRecyclerViewAdapterHelper實現(xiàn)一個RecyclerView的Adapter是不是很簡單
五、接下來是KotlinActivity
首先定義幾個我們需要用到的變量(列表的數(shù)據(jù)源,adapter,handler)

然后給數(shù)據(jù)源添加一些數(shù)據(jù)進(jìn)去,這里和java的for循環(huán)還是有些差別的,我們是這樣給list添加一些數(shù)據(jù)進(jìn)去 ?(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結(jié)束,所以一共是21條)數(shù)據(jù)了。


以上是給RecyclerView的item添加長按和短按事件以及item子控件的點擊事件,這里有用到lamda表達(dá)式,其中出現(xiàn)的下劃線的意思是當(dāng)前的參數(shù)沒有使用,可以用下劃線來代替。when表達(dá)式其實就是類似于java中的switch,但是使用起來比switch要方便很多。

以上是上拉加載和下拉刷新。實現(xiàn)的方法也很簡單,就不多說了。
總結(jié):
使用kotlin后,發(fā)現(xiàn)kotlin比java確實要簡化很多。網(wǎng)上說的用kotlin可以簡化三倍的代碼,我覺得這話雖然有點夸張,但也確實說明了kotlin的簡潔。相信在使用了kotlin后,你也會被它深深吸引的,而且最重要的一點是它可以和java無縫調(diào)用。