CRUD Firebase Realtime Database (FINAL): Membuat Fungsi Delete Data


Assalamualaikum Warahmatullahi Wabawarakatuh.

Alhamdullilah, kita sudah melalui beberapa tahap pembuatan aplikasi CRUD dengan menggunakan Firebase Realtime Database, berikut ini merupakan materi terakhir dalam pembuatan aplikasi CRUD, disini kita akan membuat fungsi Delete untuk menghapus data Mahasiswa yang dipilih oleh user.


Konsep pada fitur Delete hampir sama dengan fitur Update, yang telah kita bahas pada tutorial sebelumnya, yaitu dengan menggunakan fungsi longClick, untuk menampilkan menu delete pada item didalam list.

Cara kerja dari fitur delete tersebut,pertama kita membuat sebuah interface untuk menghubungkan adapter dengan class MyListData.java, karena pada adapter tersebut tidak mempunyai referensi database, jadi kita membuat sebuah interface untuk menghubungkannya.

CRUD Firebase Realtime Database (FINAL): Membuat Fungsi Delete Data

1) Pertama buka class RecyclerViewAdapter, pada class tersebut kita tambahkan interface, yang digunakan untuk menjembatani data yang akan dikirim dari Adapter pada class MyListData.
//Membuat Interfece
public interface dataListener{
    void onDeleteData(data_mahasiswa data, int position);
}

//Deklarasi objek dari Interfece
dataListener listener;

//Membuat Konstruktor, untuk menerima input dari Database
public RecyclerViewAdapter(ArrayList listMahasiswa, Context context) {
    this.listMahasiswa = listMahasiswa;
    this.context = context;
    listener = (MyListData)context;
}
Pada class RecyclerViewAdaper, kita menambahkan interface dan menambahkan inisialisasi variablenya pada constructor, untuk mendapatkan context dari class MyListData.

2) Jika terjadi error, itu dikarenakan kita belum mengimplementasikan method onDeleteData() pada class MyListData, yang menjadi di contextnya, Solusinya, tekan (alt + enter) pada bagian yang error, lalu implementasikan method tersebut, seperti pada gambar berikut ini.


3) Setelah kalian selesai mengimplementasi metnod onDeleteData(), selanjutnya buka kembali class RecyclerViewAdapter, tambahkan baris kode berikut ini didalam onBindViewHolder(), pada method onLongClickListener(), seperti berikut ini.
holder.ListItem.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(final View view) {
        final String[] action = {"Update", "Delete"};
        AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());
        alert.setItems(action,  new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                switch (i){
                    case 0:
                        /*
                          Berpindah Activity pada halaman layout updateData
                          dan mengambil data pada listMahasiswa, berdasarkan posisinya
                          untuk dikirim pada activity selanjutnya
                        */
                        Bundle bundle = new Bundle();
                        bundle.putString("dataNIM", listMahasiswa.get(position).getNim());
                        bundle.putString("dataNama", listMahasiswa.get(position).getNama());
                        bundle.putString("dataJurusan", listMahasiswa.get(position).getJurusan());
                        bundle.putString("getPrimaryKey", listMahasiswa.get(position).getKey());
                        Intent intent = new Intent(view.getContext(), updateData.class);
                        intent.putExtras(bundle);
                        context.startActivity(intent);
                        break;
                    case 1:
                        //Menggunakan interface untuk mengirim data mahasiswa, yang akan dihapus
                        listener.onDeleteData(listMahasiswa.get(position), position);
                        break;
                }
            }
        });
        alert.create();
        alert.show();
        return true;
    }
});
4) Buka class MyListAdapter, didalam method onDeleteData() yang sudah kalian implementasi tadi, tambahkan baris kode berikut ini.
@Override
public void onDeleteData(data_mahasiswa data, int position) {
    /*
     * Kode ini akan dipanggil ketika method onDeleteData 
     * dipanggil dari adapter pada RecyclerView melalui interface.
     * kemudian akan menghapus data berdasarkan primary key dari data tersebut
     * Jika berhasil, maka akan memunculkan Toast
     */
    String userID = auth.getUid();
    if(reference != null){
        reference.child("Admin")
                .child(userID)
                .child("Mahasiswa")
                .child(data.getKey())
                .removeValue()
                .addOnSuccessListener(new OnSuccessListener() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Toast.makeText(MyListData.this, "Data Berhasil Dihapus", Toast.LENGTH_SHORT).show();
                    }
                });
    }
}
Aplikasi akan menggunakan keym untuk penanda, data mana yang akan dihapus. Jika ada data dengan key yang sama, maka aplikasi akan memanggil fungsi removeValue() untuk menghapus data dari Database.

Demo:



Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat. Jika ada yang ingin kalian tanyakan, silakan isi kolom komentar dibawah. Project tersebut bisa kalian download di akun Github saya, Klik Disini.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.