做者:Antonio Leivaandroid
時間:Dec 19, 2016app
原文連接:https://antonioleiva.com/kotlin-integrations-android-sdk/框架
使用Kotlin語言不單單簡化你的代碼,並且也能夠簡化從Kotlin調用Java代碼。ide
這是怎樣工做的?簡單地使用一些通用結構就能夠獲得Kotlin的感受。函數
在這篇文章中,你將看到一些例子,它是怎樣提高相同代碼。它也預防Java代碼包含模板部分。性能
如Android 框架是基於Java庫,以前咱們提到的一切關於Java應用都徹底適用於Android。學習
讓咱們來看一些例子。ui
在前面幾篇文章中,咱們已經看到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方法,因此與直接調用它們同樣。
這使人驚奇。對於Android的任何簡單事情,不是要建立匿名類嗎?而使用Kotlin,你不須要爲Android偵聽器這樣作。
條件是這樣:須要一個接口對於一個方法。典型的例子是View類的setOnClickListener。
你可以作這樣簡單的一句:
1 view.setOnClickListener { navigateToNextActivity() }
看多麼容易?
若是你須要從原接口返回視圖,你也能夠覆蓋它:
1 view.setOnClickListener { v -> navigateWithView(v) }
說明:這是什麼怪結構?它是Lambda表達式,它表示函數的輸入參數是箭頭左邊定義的方法。箭頭右邊是函數體,上一行是結果。咱們將在後續文章中討論這些。
在Kotlin項目中,集成其餘Java庫是很容易的,尤爲是Android框架。
如何你要進一步學習Kolin,請加入這個列表,你就能夠在你的收件箱中收到這些文章。