Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Kotlin的android擴展:對findViewById說再見(KAD 04),kotlinfindviewbyid

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

編輯:關於android開發

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     <TextView
12         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視圖。用一個簡單的插件,我們就可以在擴展後忽略所有那些涉及視圖恢復的糟糕代碼。這插件將按照我們的要求特性產生沒有任何問題的正確的類型。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved