寫在前面的話
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無縫調用。