Anda di halaman 1dari 32

Rio Andriyat – CRUD Android dengan Database Firebase 1

Table of Contents
A. FIREBASE ............................................................................................................................................... 2
1. Definisi Firebase ................................................................................................................................ 2
2. Membuat Akun Firebase ................................................................................................................... 2
B. KONFIGURASI PROJECT DENGAN FIREBASE.......................................................................................... 3
1. Membuat Project Android ................................................................................................................ 3
2. Sinkron Project dengan Firebase (Firebase Asisten)......................................................................... 5
3. Konfigurasi Project/Database Firebase ........................................................................................... 10
C. INSERT/CREATE DATA KE FIREBASE .................................................................................................... 13
D. READ DATA FIREBASE.......................................................................................................................... 19
E. UPDATE DATA FIREBASE ..................................................................................................................... 25
F. DELETE DATA FIREBASE....................................................................................................................... 32
Rio Andriyat – CRUD Android dengan Database Firebase 2

CRUD ANDROID dengan FIREBASE

A. FIREBASE
1. Definisi Firebase
Firebase adalah Cloud Service Provider dan Backend as a Service yang dimiliki oleh
Google. Firebase merupakan solusi yang ditawarkan oleh Google untuk mempermudah
dalam pengembangan aplikasi mobile maupun web.
Firebase memiliki banyak SDK yang memungkinkan untuk mengintegrasi-kan layanan
ini dengan Android, iOS, Javascript, C++ hingga Unity

Gambar 1. Diagram Fitur FireBase


2. Membuat Akun Firebase
Lakukan register account sign up for a free account , firebase akan memberikan free
account secara default dan akan secara otomatis dibuatkan url dengan akhiran
firebaseio.com yang akan digunakan untuk menyimpan dan mensinkronisasikan data.
Rio Andriyat – CRUD Android dengan Database Firebase 3

B. KONFIGURASI PROJECT DENGAN FIREBASE


1. Membuat Project Android
a. Buatlah project dengan nama FirebaseDosen

b. Tentukan Minimum API SDK,


Rio Andriyat – CRUD Android dengan Database Firebase 4

c. Pilih Empty Activity

d. Selesai, Tunggu Sincron Gradle


Rio Andriyat – CRUD Android dengan Database Firebase 5

2. Sinkron Project dengan Firebase (Firebase Asisten)


Catatan :
Syarat minimal untuk Firebase SDK adalah :

 Device Android minimal versi 4.0 (Ice Cream Sandwich) ke atas, dan Google
Play services versi 10.2.0 ke atas
 Google Play services SDK dari Google Repository, (Sudah Terinstal)
 Minimal versi Android Studio 3, untuk penggunaan Firebase Assistant

a. Sebelumnya, project android di android studio telah dibuat. Dan android studio sudah
login dengan akun google yang sudah teregistrasi di firebase.google.com.

b. Pilih Menu ToolsFirebase


c. Pilih Analytics untuk memulai sinkron firebase dengan android project., lalu pilih Log
an Analytics Event.
d. Pilih Connect to Firebase.
Rio Andriyat – CRUD Android dengan Database Firebase 6

e. Akan muncul dialog menu Connect to Firebase seperti berikut :

Keterangan :
Create new Firebase Project  Membuat Project firebase baru (Beri Nama Project)
Choose an Existing  Memilih menggunakan Project Firebase yang sudah ada.
Country/Region  Memilih Lokasi
f. Buatlah Project Baru dengan Nama FirebaseDosen, lalu pilih Connect to Firebase.
Rio Andriyat – CRUD Android dengan Database Firebase 7

g. Setelah terkoneksi, seperti diatas, artinya :


1. Pada akun firebase Console kita, sudah terbuat project dengan nama
FirebaseDosen.

2. Pada file Project Android, sudah terdapat file json pada project/app
Rio Andriyat – CRUD Android dengan Database Firebase 8

h. Selanjutnya, kita menambahkan Plugin SDK Firebase


1. Menambahkan Build.gradle level project (<project>/build.gradle):

buildscript {
dependencies {
// Add this line
classpath 'com.google.gms:google-services:4.0.1'
}
}

2. Build.gradle level aplikasi (<project>/<app-module>/build.gradle):

dependencies {
// Add this line
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-database:16.0.1'

}
...
// Add to the bottom of the file
apply plugin: 'com.google.gms.google-services'

3. Membuka akses internet di manifest


<uses-permission android:name="android.permission.INTERNET" />

4. Setelah semua ditambahkan, lakukan syscron gradle


Hasil dari konfigurasi tersebut adalah :

Gambar : Gradle Aplikasi


Rio Andriyat – CRUD Android dengan Database Firebase 9

Gambar : Gradle Project

Gambar : Manifest

5. Dipastikan sincron gradle berhasil, sebelum melanjutkan ke tahap berikutnya.


Rio Andriyat – CRUD Android dengan Database Firebase 10

3. Konfigurasi Project/Database Firebase

1. Masuk ke Console Firebase melalui web Browser, Masuk ke Project FirebaseDosen.


Lalu pilih Menu Database.

2. Pilih Buat Database


Rio Andriyat – CRUD Android dengan Database Firebase 11

3. Lalu pilih aktifkan

4. Pilih Realtime Database


Rio Andriyat – CRUD Android dengan Database Firebase 12

5. Pilih tab aturan

6. Lakukan perubahan setting rule akses dengan mengganti nilai false menjadi true.
Setelah itu pilih publishkan.

7. Database project firebase sudah dapat digunakan.


Rio Andriyat – CRUD Android dengan Database Firebase 13

C. INSERT/CREATE DATA KE FIREBASE


Struktur Project :

1. Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="10dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="PENDATAAN DATA DOSEN" />

<Button
android:id="@+id/bt_createdata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Tambah Data Dosen" />

<Button
android:id="@+id/bt_viewdata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Lihat Data Dosen" />

</LinearLayout>
Rio Andriyat – CRUD Android dengan Database Firebase 14

2. Strings.xml
<resources>
<string name="app_name">FirebaseDosen</string>
<array name="JA">
<item>Asisten Ahli</item>
<item>Lektor 200</item>
<item>Lektor 300</item>
<item>Lektor Kepala</item>
<item>Profesor</item>
</array>
</resources>

3. MainActivity.java
package com.example.vr46.firebasedosen;

import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private Button btCreateDB;


private Button btViewDB;

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

btCreateDB=(Button)findViewById(R.id.bt_createdata);
btViewDB=(Button)findViewById(R.id.bt_viewdata);

btCreateDB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Kelas yang akan dijalankan ketika tombol Create/insert di Klik
startActivity(DBCreateActivity.getActIntent(MainActivity.this));
}
});

btViewDB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Kelas untuk View Data
//startActivity(DBReadActivity.getActIntent(MainActivity.this));

}
});
}
}
Rio Andriyat – CRUD Android dengan Database Firebase 15

4. Dosen.java
Buatlah File java baru dengan nama Dosen.Java. Peran dosen.java sebagai objek yang
digunakan untuk set dan get dengan model MVC.
package com.example.vr46.firebasedosen;

import java.io.Serializable;

public class Dosen implements Serializable


{
private String nik;
private String nama;
private String ja;
private String key;

public Dosen()
{
}

public String getNik() {


return nik;
}

public void setNik(String nik) {


this.nik = nik;
}

public String getNama() {


return nama;
}

public void setNama(String nama) {


this.nama = nama;
}

public String getJa() {


return ja;
}

public void setJa(String ja) {


this.ja = ja;
}

public String getKey() {


return key;
}

public void setKey(String key) {


this.key = key;
}

public String toString()


{
return " "+nik+"" +
"" +nama+"" +
"" +ja;
}
public Dosen(String nk, String nm, String j)
{
nik=nk;
nama=nm;
ja=j;
}
}
Rio Andriyat – CRUD Android dengan Database Firebase 16

5. Buatlah empty activity baru dengan nama DBCreateActivity.java dan


Activity_dbcreate.xml
Scriptnya sebagai berikut :

6. Activity_dbcreate.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="10dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="TAMBAH DATA DOSEN" />

<EditText
android:id="@+id/nik"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nomor Induk Pegawai"
android:inputType="text" />

<EditText
android:id="@+id/nama_dosen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Nama Dosen"
android:inputType="text" />

<Spinner
android:id="@+id/spinnerJA"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/JA" />

<Button
android:id="@+id/bt_submit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit" />

</LinearLayout>
Rio Andriyat – CRUD Android dengan Database Firebase 17

7. DBCreateActivity.java
package com.example.vr46.firebasedosen;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class DBCreateActivity extends AppCompatActivity


{
// variable yang merefers ke Firebase Realtime Database
private DatabaseReference database;

// variable fields EditText dan Button


private Button btSubmit;
private EditText etNik;
private EditText etNama;
private Spinner etJa;

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

// inisialisasi fields EditText dan Button


etNik = (EditText) findViewById(R.id.nik);
etNama = (EditText) findViewById(R.id.nama_dosen);
etJa = (Spinner) findViewById(R.id.spinnerJA);
btSubmit = (Button) findViewById(R.id.bt_submit);

// mengambil referensi ke Firebase Database


database = FirebaseDatabase.getInstance().getReference();

// kode yang dipanggil ketika tombol Submit diklik


btSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!isEmpty(etNik.getText().toString()) &&
!isEmpty(etNama.getText().toString()))
submitDosen(new Dosen(etNik.getText().toString(),
etNama.getText().toString(), etJa.getSelectedItem().toString()));
else
Snackbar.make(findViewById(R.id.bt_submit), "Data Dosen tidak
boleh kosong", Snackbar.LENGTH_LONG).show();

InputMethodManager imm = (InputMethodManager)


getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
etNama.getWindowToken(), 0);
}
});

private boolean isEmpty(String s) {


// Cek apakah ada fields yang kosong, sebelum disubmit
Rio Andriyat – CRUD Android dengan Database Firebase 18

return TextUtils.isEmpty(s);
}

private void updateDosen(Dosen dosen) {


// Next Update
}

//fungsi Simpan data Dosen


private void submitDosen(Dosen dosen) {
/**
* Ini adalah kode yang digunakan untuk mengirimkan data ke Firebase Realtime
Database
* dan juga kita set onSuccessListener yang berisi kode yang akan dijalankan
* ketika data berhasil ditambahkan
*/
database.child("dosen").push().setValue(dosen).addOnSuccessListener(this, new
OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
etNik.setText("");
etNama.setText("");
etJa.getSelectedItem().toString();
Snackbar.make(findViewById(R.id.bt_submit), "Data berhasil
ditambahkan", Snackbar.LENGTH_LONG).show();
}
});
}

public static Intent getActIntent(Activity activity) {


// kode untuk pengambilan Intent
return new Intent(activity, DBCreateActivity.class);
}
}

8. Jalankan Aplikasi, maka hasilnya sebagai berikut :


Rio Andriyat – CRUD Android dengan Database Firebase 19

D. READ DATA FIREBASE


1. Item_dosen.xml
Buat activity baru dengan nama item_dosen.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="vertical"
android:padding="10dip">
<TextView
android:id="@+id/tv_namadosen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:textColor="@android:color/black"
android:textSize="16sp" />
</LinearLayout>

2. AdapterDosenRecyclerView.java
package com.example.vr46.firebasedosen;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
Rio Andriyat – CRUD Android dengan Database Firebase 20

public class AdapterDosenRecyclerView extends


RecyclerView.Adapter<AdapterDosenRecyclerView.ViewHolder>
{

private ArrayList<Dosen> daftarDosen;


private Context context;

public AdapterDosenRecyclerView(ArrayList<Dosen> dosens, Context ctx){


/**
* Inisiasi data dan variabel yang akan digunakan
*/
daftarDosen = dosens;
daftarDosen = dosens;
context = ctx;
}

class ViewHolder extends RecyclerView.ViewHolder {

/**
* Inisiasi View
* Di tutorial ini kita hanya menggunakan data String untuk tiap item
* dan juga view nya hanyalah satu TextView
*/
TextView tvTitle;

ViewHolder(View v) {
super(v);
tvTitle = (TextView) v.findViewById(R.id.tv_namadosen);
}
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
/**
* Inisiasi ViewHolder
*/
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dosen,
parent, false);
// mengeset ukuran view, margin, padding, dan parameter layout lainnya
ViewHolder vh = new ViewHolder(v);
return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
/**
* Menampilkan data pada view
*/
final String name = daftarDosen.get(position).getNik();
holder.tvTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/**
* Read detail data
*/
}
});
holder.tvTitle.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
/**
* Delete dan update data
*/
return true;
}
});
holder.tvTitle.setText(name);
}

@Override
public int getItemCount() {
Rio Andriyat – CRUD Android dengan Database Firebase 21

/**
* Mengembalikan jumlah item
*/
return daftarDosen.size();
}
}

3. Buatlah empty activity baru dengan nama Activity_db_read.xml dan


DBReadActivity.java dengan script sebagai berikut :

4. Activity_db_read.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
android:id="@+id/rv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />

</LinearLayout>

5. DBReadActivity.java
package com.example.vr46.firebasedosen;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

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;

import java.util.ArrayList;

public class DBReadActivity extends AppCompatActivity


{
/**
* Mendefinisikan variable yang akan dipakai
*/
private DatabaseReference database;
private RecyclerView rvView;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager layoutManager;
private ArrayList<Dosen> daftarDosen;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* Mengeset layout
*/
setContentView(R.layout.activity_db_read);

/**
Rio Andriyat – CRUD Android dengan Database Firebase 22

* Inisialisasi RecyclerView & komponennya


*/
rvView = (RecyclerView) findViewById(R.id.rv_main);
rvView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
rvView.setLayoutManager(layoutManager);

/**
* Inisialisasi dan mengambil Firebase Database Reference
*/
database = FirebaseDatabase.getInstance().getReference();

/**
* Mengambil data dari Firebase Realtime DB
*/
database.child("dosen").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

/**
* Saat ada data baru, masukkan datanya ke ArrayList
*/
daftarDosen = new ArrayList<>();
for (DataSnapshot noteDataSnapshot : dataSnapshot.getChildren()) {
/**
* Mapping data pada DataSnapshot ke dalam object Dosen
* Dan juga menyimpan primary key pada object Dosen
* untuk keperluan Edit dan Delete data
*/
Dosen dosen = noteDataSnapshot.getValue(Dosen.class);
dosen.setKey(noteDataSnapshot.getKey());

/**
* Menambahkan object Dosen yang sudah dimapping
* ke dalam ArrayList
*/
daftarDosen.add(dosen);
}

/**
* Inisialisasi adapter dan data Dosen dalam bentuk ArrayList
* dan mengeset Adapter ke dalam RecyclerView
*/
adapter = new AdapterDosenRecyclerView(daftarDosen, DBReadActivity.this);
rvView.setAdapter(adapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {
/**
* Kode ini akan dipanggil ketika ada error dan
* pengambilan data gagal dan memprint error nya
* ke LogCat
*/
System.out.println(databaseError.getDetails()+"
"+databaseError.getMessage());
}
});
}

public static Intent getActIntent(Activity activity){


return new Intent(activity, DBReadActivity.class);
}
}

6. Menambahkan Script di MainActivity.java, lihat script yang berwarna hijau.


package com.example.vr46.firebasedosen;
Rio Andriyat – CRUD Android dengan Database Firebase 23

import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private Button btCreateDB;


private Button btViewDB;

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

btCreateDB=(Button)findViewById(R.id.bt_createdata);
btViewDB=(Button)findViewById(R.id.bt_viewdata);

btCreateDB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Kelas yang akan dijalankan ketika tombol Create/insert di Klik
startActivity(DBCreateActivity.getActIntent(MainActivity.this));
}
});

btViewDB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Kelas untuk View Data
startActivity(DBReadActivity.getActIntent(MainActivity.this));

}
});
}
}

7. AndroidManifest.xml
Konfigurasi Manifest sebagai berikut:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.vr46.firebasedosen">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
<activity android:name=".DBCreateActivity"></activity>
<activity android:name=".DBReadActivity"></activity>
</application>

</manifest>

8. Jalankan Program, hasilnya sebagai berikut:


Rio Andriyat – CRUD Android dengan Database Firebase 24
Rio Andriyat – CRUD Android dengan Database Firebase 25

E. UPDATE DATA FIREBASE


1. Buka kembali DBCreateActivity.java, Tambahkan kode yang berwarna hijau berikut :
package com.example.vr46.firebasedosen;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;

import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class DBCreateActivity extends AppCompatActivity


{
// variable yang merefers ke Firebase Realtime Database
private DatabaseReference database;

// variable fields EditText dan Button


private Button btSubmit;
private EditText etNik;
private EditText etNama;
private Spinner etJa;

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

// inisialisasi fields EditText dan Button


etNik = (EditText) findViewById(R.id.nik);
etNama = (EditText) findViewById(R.id.nama_dosen);
etJa = (Spinner) findViewById(R.id.spinnerJA);
btSubmit = (Button) findViewById(R.id.bt_submit);

// mengambil referensi ke Firebase Database


database = FirebaseDatabase.getInstance().getReference();

//Final Update
final Dosen dosen=(Dosen)getIntent().getSerializableExtra("data");
if(dosen!=null)
{
//ini untuk update
etNik.setText(dosen.getNik());
etNama.setText(dosen.getNama());
etJa.getSelectedItem().toString();
btSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dosen.setNik(etNik.getText().toString());
dosen.setNama(etNama.getText().toString());
dosen.setJa(etJa.getSelectedItem().toString());
updateDosen(dosen);
}
});
}
else
{
//ini untuk input
Rio Andriyat – CRUD Android dengan Database Firebase 26

// kode yang dipanggil ketika tombol Submit diklik


btSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!isEmpty(etNik.getText().toString()) &&
!isEmpty(etNama.getText().toString()))
submitDosen(new Dosen(etNik.getText().toString(),
etNama.getText().toString(), etJa.getSelectedItem().toString()));
else
Snackbar.make(findViewById(R.id.bt_submit), "Data Dosen tidak
boleh kosong", Snackbar.LENGTH_LONG).show();

InputMethodManager imm = (InputMethodManager)


getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
etNama.getWindowToken(), 0);
}
});
}

private boolean isEmpty(String s) {


// Cek apakah ada fields yang kosong, sebelum disubmit
return TextUtils.isEmpty(s);
}

private void updateDosen(Dosen dosen) {


// Update Dosen
database.child("dosen")
.child(dosen.getKey())
.setValue(dosen)
.addOnSuccessListener(this, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Snackbar.make(findViewById(R.id.bt_submit), "Data Berhasil di
Update", Snackbar.LENGTH_LONG).setAction("OKE", new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
}).show();
}
});
}

//fungsi Simpan data Dosen


private void submitDosen(Dosen dosen) {
/**
* Ini adalah kode yang digunakan untuk mengirimkan data ke Firebase Realtime
Database
* dan juga kita set onSuccessListener yang berisi kode yang akan dijalankan
* ketika data berhasil ditambahkan
*/
database.child("dosen").push().setValue(dosen).addOnSuccessListener(this, new
OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
etNik.setText("");
etNama.setText("");
etJa.getSelectedItem().toString();
Snackbar.make(findViewById(R.id.bt_submit), "Data berhasil
ditambahkan", Snackbar.LENGTH_LONG).show();
}
});
}

public static Intent getActIntent(Activity activity) {


// kode untuk pengambilan Intent
return new Intent(activity, DBCreateActivity.class);
Rio Andriyat – CRUD Android dengan Database Firebase 27

}
}

2. Buat file xml baru dengan nama dialog_view.xml sebagai berikut :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp"
android:gravity="center"
>

<Button
android:layout_margin="5dp"
android:id="@+id/bt_edit_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Edit Data"
/>

<Button
android:layout_margin="5dp"
android:id="@+id/bt_delete_data"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
/>
</LinearLayout>

3. Buka class adapter RecyclerView yang bernama AdapterDosenRecyclerView dan ganti


kode pada fungsi onBindViewHolder() menjadi seperti di bawah ini :

package com.example.vr46.firebasedosen;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import java.util.ArrayList;

public class AdapterDosenRecyclerView extends


RecyclerView.Adapter<AdapterDosenRecyclerView.ViewHolder>
{

private ArrayList<Dosen> daftarDosen;


private Context context;

public AdapterDosenRecyclerView(ArrayList<Dosen> dosens, Context ctx){


/**
* Inisiasi data dan variabel yang akan digunakan
*/
daftarDosen = dosens;
daftarDosen = dosens;
context = ctx;
}

class ViewHolder extends RecyclerView.ViewHolder {


Rio Andriyat – CRUD Android dengan Database Firebase 28

/**
* Inisiasi View
* Di tutorial ini kita hanya menggunakan data String untuk tiap item
* dan juga view nya hanyalah satu TextView
*/
TextView tvTitle;

ViewHolder(View v) {
super(v);
tvTitle = (TextView) v.findViewById(R.id.tv_namadosen);
}
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
/**
* Inisiasi ViewHolder
*/
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dosen,
parent, false);
// mengeset ukuran view, margin, padding, dan parameter layout lainnya
ViewHolder vh = new ViewHolder(v);
return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
/**
* Menampilkan data pada view
*/
final String name = daftarDosen.get(position).getNik();
holder.tvTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/**
* Read detail data
*/
}
});
holder.tvTitle.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
/**
* Delete dan update data
*/

//Update
final Dialog dialog=new Dialog(context);
dialog.setContentView(R.layout.dialog_view);
dialog.setTitle("Pilih Aksi");
dialog.show();

Button editButton=(Button)dialog.findViewById(R.id.bt_edit_data);
Button delButton=(Button)dialog.findViewById(R.id.bt_delete_data);

//aksi tombol edit di klik


editButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();

context.startActivity(DBCreateActivity.getActIntent((Activity) context).putExtra("data",
daftarDosen.get(position)));
}
}
);

//aksi buttondelete di klik


delButton.setOnClickListener(
new View.OnClickListener() {
Rio Andriyat – CRUD Android dengan Database Firebase 29

@Override
public void onClick(View view) {
/**
* Delete data
*/
}
}
);
return true;
}
});
holder.tvTitle.setText(name);
}

@Override
public int getItemCount() {
/**
* Mengembalikan jumlah item
*/
return daftarDosen.size();
}
}

4. Jalankan hasil update sebagai berikut :

Pilih Lihat Data Dosen


Rio Andriyat – CRUD Android dengan Database Firebase 30

Piliuh data dan klik yang lama, maka akan muncul popup update/delete Data
Pilih Update Data
Rio Andriyat – CRUD Android dengan Database Firebase 31
Rio Andriyat – CRUD Android dengan Database Firebase 32

F. DELETE DATA FIREBASE

Anda mungkin juga menyukai