Cara Membuat Fungsi Delete Data pada Room Database


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada seri sebelumnya kita sudah membahas mengenai Cara Edit Data pada Room Database, di seri berikut ini yaitu seri ke 6, kita akan belajar bagaimana cara menghapus data pada Room Database menggunakan fungsi Delete.


Untuk membuat fungsi delete data , caranya kita cukup menambahkan Annotation @Delete pada interface DAO, lalu kita tambahkan method baru yang didalamnya terdapat fungsi untuk proses delete data dari Room Database.

Materi yang harus kalian pelajari sebelumnya:

Proses untuk menghapus data ini bekerja saat user menekan salah satu item pada RecyclerView menggunakan fungsi onLongClickListener maka akan muncu menu dengan 2 pilihan yaitu Edit dan Delete seperti pada tutorial sebelumnya. Saat user memilih menu delete pada item yang dipilih akan dihapus dari database.

Cara Membuat Fungsi Delete Data pada Room Database

Menambahkan fungsi delete untuk menghapus data didalam Room Database

1) Seperti sebelumnya untuk menambahkan fungsi baru, pertama kita buka interface MahasiswaDAO.java, disini kita tambahkan method baru bernama deleteMahasiswa(), dengan Annotation @Delete untuk menghapus data.
package com.wildan.crudroomdatabase.data;

//========== WILDAN TECHNO ART ==========//
//======= Cianjur Apps Developer ========//

import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Update;

import com.wildan.crudroomdatabase.model.Mahasiswa;

@Dao
public interface MahasiswaDAO {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long insertMahasiswa(Mahasiswa mahasiswa);

    @Query("SELECT * FROM tMahasiswa")
    Mahasiswa[] readDataMahasiswa();

    @Update
    int updateMahasiswa(Mahasiswa mahasiswa);

    @Delete
    void deleteMahasiswa(Mahasiswa mahasiswa);
}
2) Berikutnya buka class adapter RecyclerView kalian, disini kita akan membuat method baru bernama onDeleteData(), method ini akan dijalankan pada fungsi onLongClickListener().
@SuppressLint("RecyclerView")
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {

        //Deklarasi Variable untuk mendapatkan data dari Database melalui Array
        final String getNIM = daftarMahasiswa.get(position).getNim();
        final String getNama = daftarMahasiswa.get(position).getNama();

        //Menampilkan data berdasarkan posisi Item dari RecyclerView
        holder.Nim.setText(getNIM);
        holder.Nama.setText(getNama);

        holder.item.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                CharSequence[] menuPilihan = {"Edit", "Delete"};
                AlertDialog.Builder dialog = new AlertDialog.Builder(v.getContext())
                        .setTitle("Pilih Aksi")
                        .setItems(menuPilihan, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                switch (which){
                                    case 0:
                                        /*
                                         Menjalankan Perintah Edit Data
                                         Menggunakan Bundle untuk mengambil data yang akan Diedit
                                         */
                                        onEditData(position, context);
                                        break;

                                    case 1:
                                        onDeleteData(position);
                                        break;
                                }
                            }
                        });
                dialog.create();
                dialog.show();
                return true;
            }
        });
    }

    //Menghapus Data dari Room Database yang dipilih oleh user
    private void onDeleteData(int position){
        appDatabase.mahasiswaDAO().deleteMahasiswa(daftarMahasiswa.get(position));
        daftarMahasiswa.remove(position);
        notifyItemRemoved(position);
        notifyItemRangeChanged(position, daftarMahasiswa.size());
        Toast.makeText(context, "Data Berhasil Dihapus", Toast.LENGTH_SHORT).show();
    }
Coba kalian perhatikan, pada method onDeleteData(), dengan parameter position untuk menetukan posisi dari item yang dipilih. Pada method tersebut pertama Room Database memanggil method deleteMahasiswa() dari DAO untuk menentukan data mana yang akan dihapus.

Dibawahnya kita juga akan menghapus data dari ArrayList tersebut lalu memberikan notify, untuk melihat perubahan setelah user menghapus salah satu item pada Database melalui RecyclerView, lalu akan muncul pesan Toas yang menandakan data berhasil dihapus.

Demo:





Terakhir kita akan membahas Cara Menampilkan Detail Data pada Room Database. Sekian dari saya, mohon maaf bila ada kesalahan, jika ada yang ingin ditanyaka, silakan isi kolom komentar dibawah ini.

Wassalamualaikum Warahmatullahi Wabarakatuh.

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