Kotlin與Android SDK 整合(KAD 05)

來源:互聯網
上載者:User

標籤:class   列表   roi   語言   onclick   free   工作   屬性   android架構   

Antonio Leiva

時間: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,請加入這個列表,你就可以在你的收件匣中收到這些文章。

 

Kotlin與Android SDK 整合(KAD 05)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.