(Tutorial Android) Lambda Expression in Android using Retrolambda

Monday, October 03, 2016

Lambda Expression adalah salah satu fitur penting yang ada di Java 8. Lambda Expression membuat fungsionalitas menjadi data agar dapat dipassing ke dalam suatu method sebagai parameter.

Lambda Expression memiliki sintaks seperti berikut :
parameter → expression body

Selengkapnya mengenai Lambda Expression di Java bisa dibaca-baca di sini https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
*bilang aja TS susah jelasin :v

Retrolambda adalah library yang memungkinkan kita dapat menggunakan lambda expression di Java 6, 7 dan Android.

Seperti apa penggunaan Retrolambda ini? Mari simak tutorial berikut.

Configuration

- Install JDK 8

- Tambahkan dependencies yang diperlukan di gradle.
Top-level
buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        ....
        classpath 'me.tatarka:gradle-retrolambda:3.3.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
Module-level
apply plugin: 'me.tatarka.retrolambda'

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
repositories {
    mavenCentral()
}
retrolambda {
    jvmArgs '-noverify'
}

Contoh penggunaan Retrolambda misalkan pada event listener ketika button di click.

- Tanpa Lambda Expression
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        
    }
});
- Dengan Lambda Expression
 
button.setOnClickListener(view -> {
    textView.setText(getHello().hello());
});
Bisa kita lihat perbandingan kedua implementasi di atas bahwa dengan Lambda Expression menjadi lebih singkat.

Selain itu kita juga bisa membuat sebuah interface yang mendefinisikan suatu fungsi. Misalnya buat fungsi untuk mencetak “Hello”.
public interface HelloFunction {
    String hello();
}
Memanggil method dari interface HelloFunction dengan Lambda Expression.
public HelloFunction getHello() {
    return ()  -> getString(R.string.hello);
}

Selanjutnya implementasikan fungsi hello() yang sudah kita buat di MainActivity.
package com.wimso.androidretrolambda;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView) findViewById(R.id.textView);
        Button button = (Button) findViewById(R.id.button);

        button.setOnClickListener(view -> {
            textView.setText(getHello().hello());
        });
    }

    public HelloFunction getHello() {
        return () -> getString(R.string.hello);
    }
}


Build dan jalankan maka hasilnya sebagai berikut :


Source code dapat dilihat di https://github.com/wimsonevel/Android-Retrolambda

Sekian tutorial singkat kali ini.
Semoga Bermanfat.

Share this :

Previous
Next Post »
0 Komentar

Penulisan markup di komentar
  • Silakan tinggalkan komentar sesuai topik. Komentar yang menyertakan link aktif, iklan, atau sejenisnya akan dihapus.
  • Untuk menyisipkan kode gunakan <i rel="code"> kode yang akan disisipkan </i>
  • Untuk menyisipkan kode panjang gunakan <i rel="pre"> kode yang akan disisipkan </i>
  • Untuk menyisipkan quote gunakan <i rel="quote"> catatan anda </i>
  • Untuk menyisipkan gambar gunakan <i rel="image"> URL gambar </i>
  • Untuk menyisipkan video gunakan [iframe] URL embed video [/iframe]
  • Kemudian parse kode tersebut pada kotak di bawah ini
  • © 2015 Simple SEO ✔

Ads