Kotlin Extensions Untuk Android

Budi Oktaviyan
2 min readFeb 12, 2017

Pada artikel sebelumnya, kita telah membahas tahap awal pengenalan pemrograman di Android menggunakan bahasa Kotlin. Pada artikel kali ini, kita akan coba mempelajari apa itu Kotlin Extensions. Berdasarkan dokumentasi dari kotlin itu sendiri extension yaitu seperti berikut ini…

Kotlin, similar to C# and Gosu, provides the ability to extend a class with new functionality without having to inherit from the class or use any type of design pattern such as Decorator. This is done via special declarations called extensions. Kotlin supports extension functions and extension properties

Sederhananya adalah ada beberapa fungsi yang biasa kita jadikan sebagai common function yang tujuannya adalah untuk mempermudah object lain dalam menerapkan fungsi tersebut, misalnya ketika kita membuat object utility. Pada kotlin, hal tersebut dapat dipermudah dengan bantuan extension

Penasaran kan, seperti apa bentuknya dari kotlin extension tersebut :) mari kita buat contoh sederhana dari penerapan extension ini…

Sebelum kita mulai mempelajari apa itu kotlin extension, ada baiknya kita mengetahui terlebih dahulu (khususnya pada penerapannya di Android) terdapat 2 jenis extension yang dapat diterapkan pada Android;

  • Kotlin Extensions : Extension ini dapat digunakan sebagai pengganti dari utility class yang biasa kita buat menggunakan bahasa Java
  • Kotlin Android Extensions : Extension ini dapat digunakan untuk mempermudah kita dalam memanggil ID dari layout yang sudah kita buat pada file xml kita. Untuk dapat menggunakan extension tersebut, maka kita perlu menambahkan plugin berikut pada file gradle kita…
apply plugin: 'kotlin-android-extensions'

Selanjutnya, mari kita buat terlebih dahulu layout kita, sebut saja dengan nama activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:id="@+id/cl_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:targetApi="LOLLIPOP">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@color/colorAccent"
android:elevation="4dp"
app:theme="@style/AppTheme.Toolbar" />

<Button
android:id="@+id/btn_main"
style="?attr/borderlessButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:paddingBottom="16dp"
android:paddingTop="16dp"
android:text="@string/btn_click"
android:textColor="@color/colorPrimaryDark"
android:textSize="16sp" />
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

Setelah itu, mari kita buat implementasi dengan class Kotlin, kita namakan saja dengan MainActivity.kt

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

toolbar_main.title = title
setSupportActionBar(toolbar_main)
}
}

Mungkin jika dilihat perbedaanya pada artikel sebelumnya, di sini terlihat bahwa Saya tidak melakukan inisialisasi dari view yang terdapat pada layout kita bukan ? ya benar! melainkan Saya hanya memanggilnya dengan menggunakan ID daripada view tersebut, cukup mudah dan sederhana ya :D … Jika kita lihat di Java pun ada cara binding view seperti ini, salah satunya dengan menggunakan ButterKnife

Inilah yang kita sebut dengan Kotlin Android Extensions, lalu bagaimana dengan Kotlin Extensions ? Pertama-tama, mari kita buatkan file (bukan class, melainkan file) dengan nama MainExtensions.kt dan membuatkan salah satu fungsi untuk mengembalikan nilai String seperti pada contoh berikut…

fun getHello() = "Hello from Kotlin Extension!"

Lalu, coba kita terapkan fungsi tersebut pada activity class kita…

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

toolbar_main.title = title
setSupportActionBar(toolbar_main)

btn_main.setOnClickListener { view -> Snackbar.make(cl_main, getHello(), Snackbar.LENGTH_SHORT).show() }
}
}

Kita bisa lihat dari contoh tersebut bahwa Kotlin Extension dapat di panggil dari class manapun tanpa harus melakukan inisialisasi atau membuatkan pattern singleton, seperti pada umumnya yang biasa kita lakukan jika menggunakan bahasa Java :) … Silahkan di coba dan jika ingin melihat source lengkap dari artikel ini, dapat di unduh pada link berikut

--

--

Budi Oktaviyan

The only way to do great work, is to love what you do