(Tutorial Android) Lambda Expression in Android using Retrolambda


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.

Berlangganan update artikel terbaru via email: