Sunday, March 18, 2018

Kotlin Android Extensions - improve support for Android development

Hello guys! berjumpa lagi bareng gw yang bakal ngebahas Kotlin Android Extensions yang merupakan sebuah plugin yang bisa diimplementasikan di Android Studio dengan beberapa kekuatannya untuk membantu dalam pengembangan aplikasi android.

Oh ya guys, perlu diketahui juga dalam blog kali ini bahasa yang bakal digunain yaitu kotlin. Untuk yang belum tahu mengenai kotlin itu apa atau cara instalasinya begimana, kalian bisa cek blog sini yang di post oleh mas Adi Trioka.

Support apa aja sih yang di improve oleh Kotlin Android Extensions ini?

Beberapa kekuatan yang disajikan plugin ini diantaranya ViewBinding dan Parcelable objek yang sering kita gunain dalam development. Lengkapnya dapat kalian cek di sini.

Implementasi

Oke guys, lanjut implementasi aja yuk! Sebelumnya kalian perlu install kotlin nya terlebih dahulu sebelum menggunakan plugin ini. Bagi yang masih aja belum tau kotlin itu apa atau cara instalasinya begimana, cek lagi deh blognya mas Adi Trioka.

Selanjutnya, setelah instalasi kotlin selesai, cukup tambahin line berikut di module app build.gradle :
apply plugin: 'kotlin-android-extensions'

Oh ya, karena bahasan kita kali ini ada Parcelable-nya juga. Tambahin juga line berikut di module app build.gradle :
androidExtensions {
    experimental = true
}

Oke, instalasinya cukup sekian guys. Lanjut ke bagaimana implementasi ViewBinding di plugin ini, sebagai contoh kasus sebuah view sederhana yang bernama content_main.xml berisikan TextView :
<?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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.nostratech.mahdi.helloworld.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Kemudian view tersebut bakalan kita panggil di MainActivity cukup dengan import kotlinx.android.synthetic.main.content_main.* untuk dapat memanggil langsung component yang tersedia pada view tersebut seperti code berikut :
import kotlinx.android.synthetic.main.content_main.*

class MainActivity : AppCompatActivity() {

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

        textView.text = "Hello guys!"
    }
}

Simpel banget kan? kalian ga perlu melakukan findViewById() bla bla bla ... lagi atau menggunakan third party library seperti Butterknife yang pernah dibahas mas Andy Wiranata di blognya atau Android Annotations yang pernah gw bahas di blog sebelumnya. *cheers*

Oke, selanjutnya kita coba Parcelable objeknya ya!
Buat objek yang nge-extend Parcelable. Dalam contoh kasus kali ini gw ngebuat sebuah objek kontak yang berisi id, firstName, lastName, phoneNumber, dan homeAddress seperti pada code berikut :
import kotlinx.android.parcel.Parcelize
@Parcelize
data class Contact(
        val id: Long,
        val firstName: String,
        val lastName: String?,
        val phoneNumber: String,
        val homeAddress: String) : Parcelable

Setelah objeknya dibuat, masukin objek tersebut ke dalam intent seperti biasanya. Dalam contoh kasus, gw mau ngedit sebuah kontak yang telah dipilih dalam sebuah daftar kontak untuk diedit di activity buat ngeditnya dong seperti yang nampak di code berikut :
private fun editContact(contact: Contact) {
    val intent = Intent(this, EditContactActivity::class.java)
    intent.putExtra("contact", contact)
    startActivity(intent)
}

Kemudian pada EditContactActivity-nya, ambil extra dengan kata kunci "contact" untuk mengambil parcel yang telah dibungkus di intent tadi seperti pada code berikut :
private fun getContact(): Contact? {
    return if (intent.hasExtra("contact")) intent.getParcelableExtra("contact")
    else null
}

Simpel kan? Alright guys, untuk fitur lengkapnya bisa kalian akses di sini. Sekian dulu dari gw. Semoga dapat bermanfaat dan sampai jumpa di blog berikutnya! See ya!

No comments:

Post a Comment