Menggunakan Operator Zip RxJava Di Android

Menggunakan RxJava untuk mengembangkan aplikasi android memberikan kita banyak kemudahan. Salah satunya adalah dengan menggunakan operator zip yang memungkinkan kita bisa menggabungkan beberapa observable. Pada kesempatan kali ini saya akan berbagi tentang bagaimna caranya menggunakan operator zip ini dengan mudah.

Zip

Operator zip ini berfungsi untuk menggabungkan beberapa observable. Salah satu contoh implementasi dari operator zip ini adalah bisa kita gunakan untuk mengambil data dari api dengan beberapa endpoint. Untuk mengimplementasikan nya yang perlu diperhatikan adalah type data dari hasil penggabungan observable yang kita gunakan dengan operator zip ini.

Yuk kita coba bagaimana cara menggunakan operator zip ini. Kali ini sebagai awalan kita akan coba membuat dua observable dengan type data string.

Yang pertama kita buat observable untuk nilai "Hello" seperti berikut ini :

public Observable<String> getHello(){
return Observable.just("Hello ");
}

Yang Selanjutnya adalah untuk nilai "World" :

public Observable<String> getWorld(){
return Observable.just("World");
}

Dan yang terakhir kita gabungkan dua observable ini menggunakan operator zip. Nah untuk latihan pertama ini kita akan membuat hasil dari observablenya mengembalikan nilai string juga.

public Observable<String> getHelloWorld(){
return Observable.zip(getHello(), getWorld(),
new Func2<String, String, String>() {
@Override public String call(String s, String s2) {
return s + s2;
}
});
}

Nah untuk mengambil datanya seperti ini :

getHelloWorld().subscribe(new Action1<String>() {
@Override public void call(String s) {
text.setText(s);
}
});

Gimana gampang bukan? Intinya yang perlu kita perhatikan disini adalah ketika menggabungkan nya dengan zip adalah method ini :

new Func2<String, String, String>()

Pada contoh di atas type data String yang di generic yang ketiga itu adalah type return datanya. Kita bisa saja merubah ke bentuk yang lain, misalkan kita akan mereturn menjadi Integer cukup buat menjadi seperti ini:

new Func2<String, String, Integer>()

Kita juga bisa menggabungkan lebih dari 2 observable misalkan seperti ini :

public Observable<String> getHelloWorldMore() {
return Observable.zip(getHello(), getWorld(), getHelloWorldInteger(),
new Func3<String, String, Integer, String>() {
@Override
public String call(String v1, String v2, Integer v3) {
return v1 + v2 + v3;
}
});
}

Combine Observable REST Api

Seperti yang sudah kita bahas di awal munggkin disini temen — temen sering butuhkan adalah jika kita menggunakan atau mengambil data dari beberapa endpoint api. Kita juga bisa menggunakan operator zip ini caranya pun sama saja seperti contoh di atas kita hanya perlu memperhatikan tipe data nya saja.

Kali ini kita akan coba membuat aplikasi info gempa dengan mengambil api dari http://ibacor.com/api#bcr-bmkg. Disana kita akn mengabil data info gempa dirasakan dan gempa terkini. Ok yang pertama kita lakukan adalah membuat observable untuk mengambil data gempa terkini.

Selanjutnya kita buat observable untuk mengambil data gempa dirasakan.

Dan yang terakhir kita gabungkan dua observable ini .

Dan berikut ini cara mengkonsumsi datanya.

Yups gimana mudahkan? Sampai ketemu di tips — tips berikutnya dari saya ya guys. Silahkan bagikan tutorial ini jika kamu suka and happy codings :).

Untuk source code dari tutorial ini silahkan ambil di sini.

Dan yang terakhir terimakasih telah mampir dan membaca tutorial ini ya.

Show your support

Clapping shows how much you appreciated Ahmad Rosid’s story.