Kotlin與Android SDK 集成(KAD 05)

做者:Antonio Leivaandroid

時間:Dec 19, 2016app

原文連接:https://antonioleiva.com/kotlin-integrations-android-sdk/框架

 

使用Kotlin語言不單單簡化你的代碼,並且也能夠簡化從Kotlin調用Java代碼。ide

 

這是怎樣工做的?簡單地使用一些通用結構就能夠獲得Kotlin的感受。函數

 

在這篇文章中,你將看到一些例子,它是怎樣提高相同代碼。它也預防Java代碼包含模板部分。性能

 

Kotlin與Android SDK 集成

如Android 框架是基於Java庫,以前咱們提到的一切關於Java應用都徹底適用於Android。學習

 

讓咱們來看一些例子。ui

 

映射到屬性的getter和setter方法

在前面幾篇文章中,咱們已經看到getter和setter。這只是解釋。spa

 

如咱們討論的,Kotlin使用屬性而不是 字段+getter+setter,賦值的方式與在Java public域中get同樣。code

 

可是咱們也知道,簡單的賦值能夠執行代碼,或咱們實現的自定義操做。

 

這類的規則是在Java中找到的任何setX和getX都被映射到Kotlin X。

 

例如,若是你在用TextView,你能夠用相似屬性的語句設置text:

1 val textView: TextView = ...
2 textView.text = "My Text"

 

固然,這能夠應用到任何類。你用相同的方法,在Activity可以訪問(例如)applicationContext 或者 layoutInflater:

1 layoutInflater.inflate(R.layout.view_item, parent)
2 val hello = applicationContext.getString(R.string.hello)

 

這不用擔憂性能,它們事實上是映射到原始的getter和setter方法,因此與直接調用它們同樣。

 

接口方法映射到Lambda表達式

 

這使人驚奇。對於Android的任何簡單事情,不是要建立匿名類嗎?而使用Kotlin,你不須要爲Android偵聽器這樣作。

 

條件是這樣:須要一個接口對於一個方法。典型的例子是View類的setOnClickListener。

 

你可以作這樣簡單的一句:

1 view.setOnClickListener { navigateToNextActivity() }

 

看多麼容易?

 

若是你須要從原接口返回視圖,你也能夠覆蓋它:

1 view.setOnClickListener { v -> navigateWithView(v) }

 

說明:這是什麼怪結構?它是Lambda表達式,它表示函數的輸入參數是箭頭左邊定義的方法。箭頭右邊是函數體,上一行是結果。咱們將在後續文章中討論這些。

 

結論

在Kotlin項目中,集成其餘Java庫是很容易的,尤爲是Android框架。

 

如何你要進一步學習Kolin,請加入這個列表,你就能夠在你的收件箱中收到這些文章。

相關文章
相關標籤/搜索