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