Belajar CRUD Room Database di Android : Membuat Fungsi Edit Data

Halo, melanjutkan postingan tutorial saya tentang membuat fungsi CRUD pada Room Database di Android. Jika sebelumnya kita telah belajar cara melakukan Insert data dan Read all data menggunakan Room Database library di Android, maka kali ini kita akan belajar bagaimana caranya melakukan update/edit data. Update data pada Room Database library di Android berguna apabila kita ingin mengubah data yang sebelumnya sudah kita masukkan.

Bagi yang belum tahu apa itu Room, Room adalah sebuah database library yang memudahkan kita dalam me-manage dan melakukan operasi-operasi CRUD, query dan sebagainya pada database SQLite di Android. Kalian bisa baca tutorial sebelumnya tentang cara meng-import Room database library ke dalam project aplikasi di Android Studio kalian.

Karena tutorial ini berhubungan erat dengan tutorial-tutorial tentang Room database sebelumnya, saya sangat sarankan kalian untuk membaca terlebih dahulu tutorial-tutorial berikut sebelum melanjutkan.

Pre-Requisites :

  1. Membuat Project Baru di Android Studio
  2. Mengimport Room Library di Android Studio
  3. Membuat Entity, DAO, Database menggunakan Room library
  4. Melakukan Create / Insert Data menggunakan Room database library
  5. Melakukan Read All Data Menggunakan Room Database Library
  6. (Optional)Tutorial Lengkap SQLite

Membuat Fungsi Edit Data pada Room Database Library di Android

Membuat Edit Data Interface
Untuk membuat fungsi Edit Data, kita pertama kali harus membuat interface nya terlebih dahulu. Pada tutorial ini interface nya kita menggunakan Activity yang sama seperti pada saat kita melakukan Insert Data, yaitu RoomCreateActivity.java. Kita hanya perlu melakukan modifikasi pada class tersebut untuk bisa menerima data dan melakukan fungsi Edit, full source code dari class tersebut bisa dilihat di sini.

Menambahkan Fungsi Edit Data pada Data Access Object
Kemudan kita akan menambahkan fungsi baru untuk Edit data pada Data Access Object. Buka file BarangDAO.java kalian, dan copy paste kan kode di bawah ini :

package co.twoh.roomtutorial.data;

import android.arch.persistence.room.Dao;
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 co.twoh.roomtutorial.model.Barang;

/**
 * Created by Herdi_WORK on 21.01.18.
 */

@Dao
public interface BarangDAO {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    long insertBarang(Barang barang);

    @Update
    int updateBarang(Barang barang);

    @Query("SELECT * FROM tbarang")
    Barang[] selectAllBarangs();

}

Pada source code di atas, bisa dilihat kita menambahkan fungsi updateBarang() pada class Data Access Object. Method tersebut mempunyai annotation @Update, yang berarti method itu adalah method bawaan dari Room Database Library, dan yang perlu kita lakukan hanyalah menambahkan annotation dan method tersebut pada DAO, logic untuk update datanya akan dihandle langsung oleh Room database library.

Membuat Edit Data Flow
Setelah itu kita akan membuat flow untuk Edit data. Jadi untuk melakukan Edit Data pada aplikasi, kita akan membuka activity Read All data terlebih dahulu. Kemudian pada list RecyclerView kita akan menambahkan OnLongClickClickListener pada RecyclerView Adapter, yang apabila kita melakukan long click pada RecyclerView item akan muncul Dialog. Pada Dialog itulah kita akan bisa memilih opsi Edit Data. Setelah opsi Edit Data dipilih, maka kita akan dibawa ke Activity berbeda dengan menyertakan Bundle data Barang pada Intent, untuk melakukan Edit Data.

Untuk source code yang diperlukan di flow ini, bisa dilihat di sini (AdapterBarangRecyclerView.java).

Source code XML layout dari dialog yang muncul ketika kita melakukan OnLongClick, bisa dilihat di sini.

Memanggil Fungsi Edit Data
Apabila langkah-langkah di atas sudah selesai dilakukan maka yang terakhir yang perlu dilakukan adalah mengintegrasikan step-step di atas dan melakukan pemanggilan dari fungsi Edit data dari DAO. Dengan terlebih dahulu menginisialisasi class AppDatabase.java yang sebelumnya sudah kita buat.

Codingan utamanya seperti di bawah ini, kita tambahkan pada class RoomCreateActivity.java :

Inisialisasi AppDatabase :

    private AppDatabase db;

    db = Room.databaseBuilder(getApplicationContext(),
                AppDatabase.class, "barangdb").build();

Execute fungsi Edit Data dengan memasukkan object Barang baru yang value nya sudah diubah :

    private void updateBarang(final Barang barang){
        new AsyncTask<Void, Void, Long>(){
            @Override
            protected Long doInBackground(Void... voids) {
                long status = db.barangDAO().updateBarang(barang);
                return status;
            }

            @Override
            protected void onPostExecute(Long status) {
                Toast.makeText(RoomCreateActivity.this, "status row "+status, Toast.LENGTH_SHORT).show();
            }
        }.execute();
    }

That’s all, itu saja yang perlu diubah. Sekarang mari kita jalankan dan demokan aplikasinya.

Demo

Ketika kita buka aplikasi kemudian Read All Data > Long Click pada item yang mau diedit, maka akan muncul dialog seperti di bawah.

Dialog Edit Data

Dialog Edit Data

Click “Edit” pada Dialog, kita akan dibawa ke activity seperti gambar di bawah ini. Kemudian kita coba edit data tas, dan muncul Toast yang menandakan sukses edit ketika klik submit.

Edit Data Success Room Database

Thats all, kita sudah berhasil melakukan step ketiga (Edit data) pada series tutorial CRUD menggunakan Room database library.

Untuk cara mendelete data yang sudah kita inputkan pada aplikasi menggunakan Room Database library ini akan saya bahas di tutorial selanjutnya.

Semoga berguna, untuk source code lengkap nya, kalian bisa download di GitHub saya. Jangan lupa untuk follow dan star juga ya. 😀

Jangan sungkan untuk bertanya apabila ada yang kurang mengerti, silahkan tulis lewat komentar di bawah. 😉





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

Leave a Reply

Do NOT follow this link or you will be banned from the site!