Belajar CRUD Database Android Menggunakan Room : Membuat Fungsi Read Detail Data

Hi semuanya, kali ini kita sampai pada bagian terakhir dari series tutorial belajar CRUD database menggunakan Room Database di Android, yaitu tentang bagaimana cara melakukan Read Detail Data. Di tutorial sebelumnya kita sudah belajar tentang cara Read All Data, di situ kita belajar cara mengambil semua data yang ada di database dan menampilkannya di sebuah list. Kali ini kita hanya akan mengambil satu data barang dari database, atau detailnya saja.

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. Melakukan Update Data Menggunakan Room Database Library
  7. Melakukan Delete Data Menggunakan Room Database Library
  8. (Optional)Tutorial Lengkap SQLite

Membuat Fungsi Read Detail Data pada Room Database Library di Android

Membuat Read Detail Data Activity

Oke pertama-tama kita akan membuat interface untuk menampilkan detail data yang kita ambil dari database. Buatlah sebuah class Activity bernama RoomReadSingelActivity.java, dan copy pastekan kode di bawah ini :

RoomReadSingleActivity.java

package co.twoh.roomtutorial;

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.view.View;
import android.widget.Button;
import android.widget.EditText;

import co.twoh.roomtutorial.model.Barang;

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

public class RoomReadSingleActivity extends AppCompatActivity {

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

        EditText etNama = findViewById(R.id.et_namabarang);
        EditText etMerk = findViewById(R.id.et_merkbarang);
        EditText etHarga = findViewById(R.id.et_hargabarang);
        Button btSubmit = findViewById(R.id.bt_submit);

        etNama.setEnabled(false);
        etMerk.setEnabled(false);
        etHarga.setEnabled(false);
        btSubmit.setVisibility(View.GONE);

        Barang barang = (Barang) getIntent().getSerializableExtra("data");
        if(barang!=null){
            etNama.setText(barang.getNamaBarang());
            etMerk.setText(barang.getMerkBarang());
            etHarga.setText(barang.getHargaBarang());
        }

    }

    public static Intent getActIntent(Activity activity) {
        // kode untuk pengambilan Intent
        return new Intent(activity, RoomReadSingleActivity.class);
    }
}

Activity itu hanya berfungsi untuk menampilkan data detail barang saja. Untuk XML layoutnya kita menggunakan layout yang sama dengan yang kita gunakan pada tutorial Create / Insert data.

Menambahkan Fungsi Select Detail Data pada Data Access Object

Setelah itu kita akan menambahkan fungsi untuk mengambil data tertentu dari database. Jika pada tutorial Read Data, kita menggunakan query select all, maka untuk mengambil detail data kita menggunakan query select + where, dimana kita hanya akan mengambil data barang berdasarkan id barang tertentu saja.

Buka class BarangDAO.java dan tambahkan kode di bawah ini :

package co.twoh.roomtutorial.data;

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 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);

    @Delete
    int deleteBarang(Barang barang);

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

    @Query("SELECT * FROM tbarang WHERE barangId = :id LIMIT 1")
    Barang selectBarangDetail(int id);
}

Bisa dilihat pada codingan di atas kita menambahkan fungsi selectBarangDetail() yang menerima parameter masukan berupa id barang yang ingin kita select/ambil dari database. Pada fungsi tersebut kita menggunakan annotation @Query karena fungsi itu bukan fungsi bawaan dari Room Database Library dan supaya kita bisa menggunakan query SQLite pada fungsi tersebut. Di sini kita ingin mengambil data barang berdasarkan id barang, maka kita tinggal tulis query SQLite standard, yaitu select ditambah clause where barangId = id barang yang dimasukkan.

Membuat Read Detail Data Flow

Selanjutnya kita akan membuat flow untuk fungsi Read Detail Data. Untuk melakukan Read Detail Data, kita perlu masuk ke activity Read All data terlebih dahulu. Di sana kita akan tambahkan OnClickListener pada RecyclerView yang menampilkan list semua data. Saat item pada RecyclerView diklik, aplikasi akan memanggil fungsi untuk men-query detail data dari database berdasarkan id barang, kemudian menyimpan hasilnya dalam bundle dan mem-passing nya ke activity Read Detail Data melalui Intent untuk kemudian ditampilkan datanya di activity tersebut.

Source code yang diperlukan untuk menambahkan OnClickListener dan membuat flow ini bisa dilihat di sini.

Memanggil Fungsi Read Detail Data

Jika langkah-langkah di atas sudah dilakukan, maka last step nya adalah memanggil fungsi Read Detail Data yang sudah kita tambahkan di DAO saat kita melakukan On Click pada salah satu item di list RecyclerView. Dengan terlebih dahulu menginisialisasi class AppDatabase.java yang sebelumnya sudah kita buat.

Codingan utamanya adalah seperti di bawah, kita tambahkan pada class AdapterBarangRecyclerView.java :

Inisialisasi AppDatabase :

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

Memanggil fungsi Read Detail Data pada saat kita melakukan click pada suatu item di RecyclerView, dengan id barang sebagai parameter masukan untuk menentukan barang mana yang ingin kita query dan tampilkan detailnya :

holder.cvMain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                /**
                 *  Kodingan untuk tutorial Read detail data
                 */
                Barang barang = db.barangDAO().selectBarangDetail(daftarBarang.get(position).getBarangId());
                context.startActivity(RoomReadSingleActivity.getActIntent((Activity) context).putExtra("data", barang));
            }
        });

Saat fungsi di atas dijalankan, maka aplikasi akan membuka RoomReadSingleActivity dengan menyertakan data barang yang sudah diquery dalam bentuk Bundle pada Intent untuk ditampilkan.

That’s all, itu saja yang perlu dilakukan. Sekarang mari kita demokan aplikasinya.

Demo

Untuk demonya, jalankan dan buka aplikasi. Kemudian pilih menu Lihat Data untuk menampilkan semua data yang ada, dan klik salah satu dari item barang di sana. Jika belum ada data barang, kalian bisa coba untuk menginputkan beberapa data ke database.

Di sini kita coba mengklik data “monitor lcd” :

Room Android Read Detail Data

Room Android Read Detail Data

Begitu diklik, maka akan muncul detail dari data “monitor lcd” seperti gambar di atas.

Voila ! Kita sudah berhasil melakukan step kelima (Read Detail data), sekaligus step terakhir pada series tutorial CRUD menggunakan Room database library ini.

Sekarang aplikasi inventaris barang kita sudah bisa melakukan semua operasi CRUD pada database di Android dengan lengkap.

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

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