Kotlin的android擴充:對findViewById說再見(KAD 04),kotlinfindviewbyid

來源:互聯網
上載者:User

Kotlin的android擴充:對findViewById說再見(KAD 04),kotlinfindviewbyid

作者:Antonio Leiva

時間:Dec 12, 2016

原文連結:http://antonioleiva.com/kotlin-android-extensions/

 

 

你也許已厭倦日複一日使用findViewById編寫Android視圖。或是你可能放棄它轉而使用著名的Butterknife庫。那麼你將會喜愛Kotlin的Android擴充。

 

Kotlin的Android擴充

Kotlin的Android擴充是Kotlin外掛程式的正規外掛程式之一,它無縫覆蓋Activities的視圖,Fragments y視圖。

 

讓我們看看它是怎樣簡單。

 

在我們代碼中整合Kotlin的Android擴充

雖然你要使用一外掛程式時可以將其整合到代碼中,但是你還是需要在Android模組中填加額外的apply:

1 apply plugin: 'com.android.application'2 apply plugin: 'kotlin-android'3 apply plugin: 'kotlin-android-extensions'

這些都是你需要添加的。這樣你就準備好使用它。

在Activity或Fragment中覆蓋視圖

此時,在你的Activity或Fragment中覆蓋視圖與直接在XML中用視圖id定義一樣方便。

 

想象你有這樣的XML:

 1 <?xml version="1.0" encoding="utf-8"?> 2 <FrameLayout 3     xmlns:android="http://schemas.android.com/apk/res/android" 4     android:layout_width="match_parent" 5     android:layout_height="match_parent"> 6   7     <TextView 8         android:id="@+id/welcomeMessage" 9         android:layout_width="wrap_content"10         android:layout_height="wrap_content"11         android:layout_gravity="center"12         android:text="Hello World!"/>13  14 </FrameLayout>

如你所見,TestView有welcomeMessage id。

 

只需在你的MainActivity這樣編寫:

1 override fun onCreate(savedInstanceState: Bundle?) {2     super.onCreate(savedInstanceState)3     setContentView(R.layout.activity_main)4  5     welcomeMessage.text = "Hello Kotlin!"6 }

 

為了能夠使用它,你需要專門import(這句我寫在下面),而且IDE能夠自動添加引入(import)它。這不是很容易嗎!

import kotlinx.android.synthetic.main.activity_main.*

 

外掛程式產生代碼能夠儲存視圖緩衝(cache),這樣你再次訪問視圖時,就不需要另一個findViewById。

 

由一個視圖覆蓋其它視圖

我們有這樣的視圖:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2               android:orientation="vertical" 3               android:layout_width="match_parent" 4               android:layout_height="match_parent"> 5      6     <ImageView 7         android:id="@+id/itemImage" 8         android:layout_width="match_parent" 9         android:layout_height="200dp"/>10     11     <TextView12         android:id="@+id/itemTitle"13         android:layout_width="match_parent"14         android:layout_height="wrap_content"/>15  16 </LinearLayout>

如你在其內添加adapter。

 

你只需用這個外掛程式,就可直接存取子視圖:

1 val itemView = ...2 itemView.itemImage.setImageResource(R.mipmap.ic_launcher)3 itemView.itemTitle.text = "My Text"

 

儘管外掛程式也協助你填寫了import,不過這類有一點點不同:

import kotlinx.android.synthetic.main.view_item.view.*

 

對此有一些事情你需要知道:

 

 

但是,你只要仔細利用它,它還是非常有用的工具。

 

結論

 

你已經知道怎樣在Kotlin中方便的處理Android視圖。用一個簡單的外掛程式,我們就可以在擴充後忽略所有那些涉及視圖恢複的糟糕代碼。這外掛程式將按照我們的要求特性產生沒有任何問題的正確的類型。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.