In Kotlin you may skip and not use the findViewById( ) and still be able to refer to UI components defined in XML Layout file. There is another way. You will need to do a couple of things first:
- Edit your Module/ app level build.gradle file
- Import the data binding library into the Kotlin file (Don’t worry, Android Studio will do it for you automatically)
I assume that you know how to configure your android studio project for Kotlin. Add this line to app level gradle file:
apply plugin: 'kotlin-android-extensions'
Now sync your project.
XML Layout File
In my case the activity xml layout file is called activity_no_find_view_by_id.xml and looks like this:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.appsdeveloperblog.kotlin.codeexamples.NoFindViewById"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </android.support.constraint.ConstraintLayout>
Kotlin code example
The name of my Kotlin file is NoFindViewById.kt and even though I am not using the findViewById() I can still refer the TextView with its id “textView” and for that I will need to first import my xml layout file like so:
import kotlinx.android.synthetic.main.activity_no_find_view_by_id.*
Here is my Kotlin file where you can see how the import of the elements defined in the xml layout file activity_no_find_view_by_id.xml is done. I can refer and work with my textView without the use of findViewById( ).
import android.graphics.Color import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_no_find_view_by_id.* class NoFindViewById : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_no_find_view_by_id) textView.text = "Good bye \"findViewById\"" textView.textSize = 30f textView.setTextColor(Color.BLACK) } }
Hope this example was helpful!
If you are looking for more short code examples in Kotlin or even longer step by step Kotlin tutorials, checkout the Android->Kotlin category of this blog.
And if you are looking for books or video tutorials on Kotlin check the list of resources below. I hope you will find some of them helpful!
Happy learning Kotlin!
Building Mobile Apps with Kotlin for Android – Books