Belajar Cara Mengambil Data di Firebase Realtime Database
Sebelumnya kita sudah belajar, Bagaimana cara menambahkan data pada Firebase Realtime Database. Selanjutnya kita akan belajar dasar-dasar cara pengambilan data dari database, data yang akan kita ambil yaitu data yang terdapat pada project sebelumnya yang sudah kita buat. Materi ini hanya akan terfokus mengenai pengambilan data di firebase. Jadi saya sarankan kalian sudah mengikuti tahap pembuatan projectnya pada tutorial sebelumnya.
Project aplikasi yang akan kita buat yaitu aplikasi Data Mahasiswa, pada tutorial ini kita akan mencoba bagaimana menampilkan data tersebut yang diambil dari Database kedalam aplikasi Android. Didalam Firebase Realtime Database tersapat beberapa jenis peristiwa pengambilan data, seperti Child Added dan Value.
Materi lainnya yang direkomendasikan:
Yang artinya pengguna yang terautentikasi saya yang beloh menbaca dan menulis didalam Database tersebut
A. Peristiwa Child Added
Child Added digunakan untuk mengambil daftar item dari Database, fungsi ini tidak menampilkan seluruh konten didalam lokasi yang telah ditentukan, Child Added pada umumnya digunakan untuk mengambil salah satu konten saja, terpicu 1 kali setiap ada turunannya, artinya jika kita membuat turunan baru, maka datanya akan terpicu pada turunan tersebut.
Misalnya kita sudah menyimpan data dan mempunyai Referensi Database seperti berikut ini.
Data tersebut disimpan tanpa mengguakan kode unik yang dihasilkan dari fungsi push().
Selanjutnya buat Activity baru bernama "MyListData", activity tersebut digunakan untuk mengambil dan menampilkan data yang terdapat pada database kita, kedalam TextView.
View:
Buka file MyListData.java, Masukan source code berikut ini.
Demo:
Penjelasan:
Pertama kita menginisialisasi FirebaseAuth yang sudah terautentikasi (Untuk Mendapatkan User ID), selanjutnya Inisialisai FirebaseDatabase dan DatabaseReference untuk mendapatkan referensi dari database kita.
Karena kita ingin mengambil data dari Mahasiswa, maka lokasi turunannya yaitu Admin > User ID. sudah saya jelaskan sebelumnya, Child Added akan terpicu satu kali setiap ada turunan yang ada, jadi jika kita menambahkan turunan lagi dibawah User ID, misalnya Mahasiswi, seperti pada gambar berikut ini.
Jadi yang akan diambil dan ditampilkan yaitu data properti dari Mahasiswi, jika kita menambahkan turunan lagi, maka data dari turunan tersebut yang akan ditampilkan.
B. Value
Adalah jenis peristiwa yang membaca snapshot statis dari database yang telah ditentukan, berbeda dengan Child Added, yang menampilkan item dan terpicu 1 kali saat ada child baru yang diturunkan, value akan terpicu saat data berada di lokasi awal, dan akan terpicu lagi saat data berubah. Data yang dimaksudkan yaitu data yang berada didalam Childnya
Misalnya kita mempunyai referensi database seperti berikut ini.
Disini kita dapat menentukan child atau turunan mana yang ingin kita ambil datanya, Mahasiswa atau Mahasiswi, pada contoh program berikut ini, misalnya kita ingin mengambil item atau data dari child Mahasiswa.
Buka file MyListData.java, untuk contoh source codenya seperti berikut ini.
Jadi kesimpulannya yang membedakan Child Added dan Value yaitu, Child Added akan memicu data 1 kali setiap ada turunan atau child baru. sedangkan Value, akan memicu data didalam child, 1 kali setiap ada data baru.
Untuk dokumentasi lengkapnya, kalian bisa lihat disini.
Jika kalian sudah memahami dasar-dasar penggunaan Realtime Database seperti yang saya jelaskan sebelumnya. Berikutnya kita akan belajar mengenai Cara pembuatan aplikasi CRUD (Create. Read. Update dan Delete) dengan menggunakan Firebase Realtime Database.
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.
Wassalamualaikum Warahmatullahi Wabarakatuh.
Materi lainnya yang direkomendasikan:
- Belajar Menggunakan FirebaseUI untuk Autentikasi
- Mengirim Notifikasi Menggunakan Firebase Cloud Messaging
- Firebase Analytics: Events dan User Properties
Yang artinya pengguna yang terautentikasi saya yang beloh menbaca dan menulis didalam Database tersebut
A. Peristiwa Child Added
Child Added digunakan untuk mengambil daftar item dari Database, fungsi ini tidak menampilkan seluruh konten didalam lokasi yang telah ditentukan, Child Added pada umumnya digunakan untuk mengambil salah satu konten saja, terpicu 1 kali setiap ada turunannya, artinya jika kita membuat turunan baru, maka datanya akan terpicu pada turunan tersebut.
Misalnya kita sudah menyimpan data dan mempunyai Referensi Database seperti berikut ini.
Data tersebut disimpan tanpa mengguakan kode unik yang dihasilkan dari fungsi push().
Selanjutnya buat Activity baru bernama "MyListData", activity tersebut digunakan untuk mengambil dan menampilkan data yang terdapat pada database kita, kedalam TextView.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_margin="16dp"
android:gravity="center"
android:orientation="vertical"
tools:context="cianjur.developer.net.firebaseexample.MyListData">
<TextView
android:id="@+id/getnim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="NIM :"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/getnama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Nama :"
android:textColor="#000000"
android:textSize="15sp" />
<TextView
android:id="@+id/getjurusan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Jurusan :"
android:textColor="#000000"
android:textSize="15sp" />
</LinearLayout>
Buka file MyListData.java, Masukan source code berikut ini.
package cianjur.developer.net.firebaseexample;
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MyListData extends AppCompatActivity {
//Deklarasi Variable
private TextView GetNIM, GetNama, GetJurusan;
private FirebaseAuth auth;
private FirebaseDatabase getDatabase;
private DatabaseReference getRefenence;
private String GetUserID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list_data);
getSupportActionBar().setTitle("Data Mahasiswa");
GetNIM = findViewById(R.id.getnim);
GetNama = findViewById(R.id.getnama);
GetJurusan = findViewById(R.id.getjurusan);
auth = FirebaseAuth.getInstance();
//Mendapatkan User ID dari akun yang terautentikasi
FirebaseUser user = auth.getCurrentUser();
GetUserID = user.getUid();
getDatabase = FirebaseDatabase.getInstance();
getRefenence = getDatabase.getReference();
/*
* Mendapatkan referensi dari lokasi Admin dan tutunannya yaitu User ID dari masing-masing
* akun user dan menambahkan ChildListener untuk menangani kejadian saat data ditambahkan,
* diubah, dihapus dan dialihkan.
*/
getRefenence.child("Admin").child(GetUserID).addChildEventListener(new ChildEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//Mengambil daftar item dari database, setiap kali ada turunannya
data_mahasiswa mahasiswa = dataSnapshot.getValue(data_mahasiswa.class);
GetNIM.setText("NIM : "+mahasiswa.getNim());
GetNama.setText("Nama : "+mahasiswa.getNama());
GetJurusan.setText("Jurusan : "+mahasiswa.getJurusan());
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
//......
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
//......
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
//.....
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Digunakan untuk menangani kejadian Error
Log.e("MyListData", "Error: ", databaseError.toException());
}
});
}
}
Penjelasan:
Pertama kita menginisialisasi FirebaseAuth yang sudah terautentikasi (Untuk Mendapatkan User ID), selanjutnya Inisialisai FirebaseDatabase dan DatabaseReference untuk mendapatkan referensi dari database kita.
Karena kita ingin mengambil data dari Mahasiswa, maka lokasi turunannya yaitu Admin > User ID. sudah saya jelaskan sebelumnya, Child Added akan terpicu satu kali setiap ada turunan yang ada, jadi jika kita menambahkan turunan lagi dibawah User ID, misalnya Mahasiswi, seperti pada gambar berikut ini.
Jadi yang akan diambil dan ditampilkan yaitu data properti dari Mahasiswi, jika kita menambahkan turunan lagi, maka data dari turunan tersebut yang akan ditampilkan.
B. Value
Adalah jenis peristiwa yang membaca snapshot statis dari database yang telah ditentukan, berbeda dengan Child Added, yang menampilkan item dan terpicu 1 kali saat ada child baru yang diturunkan, value akan terpicu saat data berada di lokasi awal, dan akan terpicu lagi saat data berubah. Data yang dimaksudkan yaitu data yang berada didalam Childnya
Misalnya kita mempunyai referensi database seperti berikut ini.
Disini kita dapat menentukan child atau turunan mana yang ingin kita ambil datanya, Mahasiswa atau Mahasiswi, pada contoh program berikut ini, misalnya kita ingin mengambil item atau data dari child Mahasiswa.
Buka file MyListData.java, untuk contoh source codenya seperti berikut ini.
package cianjur.developer.net.firebaseexample;
import android.annotation.SuppressLint;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class MyListData extends AppCompatActivity {
//Deklarasi Variable
private TextView GetNIM, GetNama, GetJurusan;
private FirebaseAuth auth;
private FirebaseDatabase getDatabase;
private DatabaseReference getRefenence;
private String GetUserID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list_data);
getSupportActionBar().setTitle("Data Mahasiswa");
GetNIM = findViewById(R.id.getnim);
GetNama = findViewById(R.id.getnama);
GetJurusan = findViewById(R.id.getjurusan);
auth = FirebaseAuth.getInstance();
//Mendapatkan User ID dari akun yang terautentikasi
FirebaseUser user = auth.getCurrentUser();
GetUserID = user.getUid();
getDatabase = FirebaseDatabase.getInstance();
getRefenence = getDatabase.getReference();
/*
* Mendapatkan referensi dari lokasi Admin dan tutunannya yaitu User ID dari masing-masing
* akun user dan tutunannya lagi yaitu Mahasiswa, lalu menambahkan ValueEventListener
* untuk menangani kejadian saat data diambil dari Snapshot.
*/
getRefenence.child("Admin").child(GetUserID).child("Mahasiswa").addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Mengambil value dari salah satu child, dan akan memicu data baru setiap kali diubah
data_mahasiswa mahasiswa = dataSnapshot.getValue(data_mahasiswa.class);
GetNIM.setText("NIM : "+mahasiswa.getNim());
GetNama.setText("Nama : "+mahasiswa.getNama());
GetJurusan.setText("Jurusan : "+mahasiswa.getJurusan());
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Digunakan untuk menangani kejadian Error
Log.e("MyListData", "Error: ", databaseError.toException());
}
});
}
}
Untuk dokumentasi lengkapnya, kalian bisa lihat disini.
Jika kalian sudah memahami dasar-dasar penggunaan Realtime Database seperti yang saya jelaskan sebelumnya. Berikutnya kita akan belajar mengenai Cara pembuatan aplikasi CRUD (Create. Read. Update dan Delete) dengan menggunakan Firebase Realtime Database.
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.
Wassalamualaikum Warahmatullahi Wabarakatuh.