作者:Antonio Leiva 時間:Dec 19, 2016 原文鏈接:https://antonioleiva.com/kotlin-integrations-android-sdk/ 使用Kotlin語言不僅僅簡化你的代碼,而且也可以簡化從Kotlin調用Java代碼。 這是怎樣工作的?簡單 ...
時間:Dec 19, 2016
原文鏈接:https://antonioleiva.com/kotlin-integrations-android-sdk/
使用Kotlin語言不僅僅簡化你的代碼,而且也可以簡化從Kotlin調用Java代碼。
這是怎樣工作的?簡單地使用一些通用結構就可以得到Kotlin的感覺。
在這篇文章中,你將看到一些例子,它是怎樣提升相同代碼。它也預防Java代碼包含模板部分。
Kotlin與Android SDK 集成
如Android 框架是基於Java庫,之前我們提到的一切關於Java應用都完全適用於Android。
讓我們來看一些例子。
映射到屬性的getter和setter方法
在前面幾篇文章中,我們已經看到getter和setter。這隻是解釋。
如我們討論的,Kotlin使用屬性而不是 欄位+getter+setter,賦值的方式與在Java public域中get一樣。
但是我們也知道,簡單的賦值可以執行代碼,或我們實現的自定義操作。
這類的規則是在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,請加入這個列表,你就可以在你的收件箱中收到這些文章。