Tutorial CRUD SQLite Android (III) : Membuat Fungsi View/Read Data

Pada bagian ketiga tentang tutorial membuat aplikasi inventaris barang pada Android menggunakan database SQLite ini, kita akan belajar tentang bagaimana membuat fungsi read/view data, untuk melihat data yang sudah dimasukkan ke database SQLite.

Tutorial ini berhubungan dengan tutorial-tutorial tentang database SQLite sebelumnya, karena itu saya sarankan untuk membaca tutorial-tutorial sebelumnya di sini.

Pre-Requisites

Membuat fitur Lihat Data

Oke, langsung saja, pada tutorial kali ini kita akan menambahkan fitur lihat data barang pada aplikasi inventaris yang akan kita buat. Pertama-tama kita akan memperbarui file layout menu.xml dengan menambahkan satu buah tombol Lihat Data.

Oh iya, sebelumnya buka dulu file values/strings.xml untuk memasukkan konstanta-konstanta String yang digunakan pada aplikasi, hal ini dilakukan supaya aplikasi ini memenuhi standar aplikasi Android yang baik. 🙂

File values/strings.xml

<resources>
    <string name="app_name">AppInventory</string>
    <string name="nama_app">twoh.co</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_main">AppInventory</string>
    <string name="barang_hint">Nama Barang</string>
    <string name="harga_hint">Harga Barang</string>
    <string name="merk_hint">Merk Barang</string>
    <string name="tombol_submit">Submit</string>
    <string name="tombol_tambah">Tambah Data</string>
    <string name="tombol_lihat">Lihat Data</string>
    <string name="title_view">Data Barang</string>
</resources>

Kemudian, inilah file menu.xml yang baru :

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

    <TextView
        android:id="@+id/nama_app"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:textSize="20sp"
        android:text="@string/nama_app"
        />

    <Button
        android:id="@+id/button_tambah"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/nama_app"
        android:layout_centerHorizontal="true"
        android:text="@string/tombol_tambah"
        />

    <Button
        android:id="@+id/button_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/button_tambah"
        android:layout_centerHorizontal="true"
        android:text="@string/tombol_lihat"
        />
</RelativeLayout>

Setelah itu, kita update juga file activity Menu.java-nya. Copy pastekan kode di bawah ini

package id.twooh.appinventory;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Menu extends Activity implements OnClickListener{

	private Button bTambah;
	private Button bLihat;
	@Override
	public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      setContentView(R.layout.menu);

	      bTambah = (Button) findViewById(R.id.button_tambah);
	      bTambah.setOnClickListener(this);
	      bLihat = (Button) findViewById(R.id.button_view);
	      bLihat.setOnClickListener(this);
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId())
		{
			case R.id.button_tambah :
				Intent i = new Intent(this, CreateData.class);
				startActivity(i);
				break;
			case R.id.button_view :
				Intent i2 = new Intent(this, ViewData.class);
				startActivity(i2);
				break;
		}
	}
}

Kita menambahkan button kedua, yaitu button_view, yang apabila di-klik akan membawa kita ke aktivitas ViewData yang akan kita buat. Apabila ada error, biarkan saja untuk sementara.

Oke, sekarang kita akan meng-update kontroller aplikasi, yaitu file DataSource.java untuk menambahkan fungsi getAllBarang() yang berfungsi untuk mengambil semua data barang dari database. Seperti inilah fungsinya. Tambahkan pada bagian sebelum kurung tutup terakhir :

	//mengambil semua data barang
	public ArrayList<Barang> getAllBarang() {
	    ArrayList<Barang> daftarBarang = new ArrayList<Barang>();

	    // select all SQL query
	    Cursor cursor = database.query(DBHelper.TABLE_NAME,
	        allColumns, null, null, null, null, null);

	    // pindah ke data paling pertama
	    cursor.moveToFirst();
	    // jika masih ada data, masukkan data barang ke
	    // daftar barang
	    while (!cursor.isAfterLast()) {
	      Barang barang = cursorToBarang(cursor);
	      daftarBarang.add(barang);
	      cursor.moveToNext();
	    }
	    // Make sure to close the cursor
	    cursor.close();
	    return daftarBarang;
	  }

Dan ini adalah kode lengkap untuk DBDataSource.java :

package id.twooh.appinventory;

import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class DBDataSource {

	//inisialiasi SQLite Database
	private SQLiteDatabase database;

	//inisialisasi kelas DBHelper
	private DBHelper dbHelper;

	//ambil semua nama kolom
	private String[] allColumns = { DBHelper.COLUMN_ID,
		      DBHelper.COLUMN_NAME, DBHelper.COLUMN_MERK,DBHelper.COLUMN_HARGA};

	//DBHelper diinstantiasi pada constructor
	public DBDataSource(Context context)
	{
		dbHelper = new DBHelper(context);
	}

	//membuka/membuat sambungan baru ke database
	public void open() throws SQLException {
	    database = dbHelper.getWritableDatabase();
	}

	//menutup sambungan ke database
	public void close() {
		dbHelper.close();
	}

	//method untuk create/insert barang ke database
	 public Barang createBarang(String nama, String merk, String harga) {

        // membuat sebuah ContentValues, yang berfungsi
        // untuk memasangkan data dengan nama-nama
        // kolom pada database
        ContentValues values = new ContentValues();
        values.put(DBHelper.COLUMN_NAME, nama);
        values.put(DBHelper.COLUMN_MERK, merk);
        values.put(DBHelper.COLUMN_HARGA, harga);

        // mengeksekusi perintah SQL insert data
        // yang akan mengembalikan sebuah insert ID
        long insertId = database.insert(DBHelper.TABLE_NAME, null,
            values);

        // setelah data dimasukkan, memanggil
        // perintah SQL Select menggunakan Cursor untuk
        // melihat apakah data tadi benar2 sudah masuk
        // dengan menyesuaikan ID = insertID
        Cursor cursor = database.query(DBHelper.TABLE_NAME,
            allColumns, DBHelper.COLUMN_ID + " = " + insertId, null,
            null, null, null);

        // pindah ke data paling pertama
        cursor.moveToFirst();

        // mengubah objek pada kursor pertama tadi
        // ke dalam objek barang
        Barang newBarang = cursorToBarang(cursor);

        // close cursor
        cursor.close();

        // mengembalikan barang baru
        return newBarang;
      }

    private Barang cursorToBarang(Cursor cursor)
    {
        // buat objek barang baru
        Barang barang = new Barang();
        // debug LOGCAT
        Log.v("info", "The getLONG "+cursor.getLong(0));
        Log.v("info", "The setLatLng "+cursor.getString(1)+","+cursor.getString(2));

        /* Set atribut pada objek barang dengan
         * data kursor yang diambil dari database*/
        barang.setId(cursor.getLong(0));
        barang.setNama_barang(cursor.getString(1));
        barang.setMerk_barang(cursor.getString(2));
        barang.setHarga_barang(cursor.getString(3));

        //kembalikan sebagai objek barang
        return barang;
    }

	//mengambil semua data barang
	public ArrayList<Barang> getAllBarang() {
	    ArrayList<Barang> daftarBarang = new ArrayList<Barang>();

	    // select all SQL query
	    Cursor cursor = database.query(DBHelper.TABLE_NAME,
	        allColumns, null, null, null, null, null);

	    // pindah ke data paling pertama
	    cursor.moveToFirst();
	    // jika masih ada data, masukkan data barang ke
	    // daftar barang
	    while (!cursor.isAfterLast()) {
	      Barang barang = cursorToBarang(cursor);
	      daftarBarang.add(barang);
	      cursor.moveToNext();
	    }
	    // Make sure to close the cursor
	    cursor.close();
	    return daftarBarang;
	  }
}

Kontroller sudah diperbarui, sekarang tinggal membuat view baru untuk menampilkan data barang yang ada pada database. Kita akan membuat layoutnya dulu, buat file xml layout baru dengan nama viewdata.xml. Dan isikan kode 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"
    >

    <TextView
        android:id="@+id/data_view"
        android:layout_width="wrap_content"
       	android:layout_height="wrap_content"
       	android:text="@string/title_view"
       	android:layout_gravity="center_horizontal"
       	android:background="#0000ff"
       	/>
	<ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        />
</LinearLayout>

Kita menggunakan ListView layout untuk menampilkan data barang pada aplikasi. Setelah itu, kita akan membuat file activity-nya bernama ViewData.java. Pada kelas tersebut, data barang yang diambil akan dimasukkan ke dalam ArrayList yang nantinya akan diset menggunakan ArrayAdapter. Ini adalah kode untuk kelas ViewData.java :

package id.twooh.appinventory;

import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class ViewData extends ListActivity {

	//inisialisasi kontroller
	private DBDataSource dataSource;

	//inisialisasi arraylist
	private ArrayList<Barang> values;
	@Override
	public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      setContentView(R.layout.viewdata);

	      dataSource = new DBDataSource(this);
	      // buka kontroller
	      dataSource.open();

	      // ambil semua data barang
	      values = dataSource.getAllBarang();

	      // masukkan data barang ke array adapter
	      ArrayAdapter<Barang> adapter = new ArrayAdapter<Barang>(this,
	    	        android.R.layout.simple_list_item_1, values);

	      // set adapter pada list
	      setListAdapter(adapter);
	}
}

Yang terakhir adalah memodifikasi Android Manifest dengan menambahkan View Data ke dalam daftar aktivitas. Buka file AndroidManifest dan masukkan kode berikut :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="id.twooh.appinventory"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="id.twooh.appinventory.CreateData"
            android:label="@string/title_activity_main" >
        </activity>
        <activity
            android:name=".Menu"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ViewData"
            android:label="@string/title_activity_main" >
        </activity>
    </application>

</manifest>

That’s all, kira kira begini tampilan aplikasi ketika dijalankan.

Demo

Kita sudah memasukkan satu barang.

Masuk satu barang

Masuk satu barang

Kemudian, kembali ke main menu.

Main Menu AppInventory

Main Menu AppInventory

Kita coba klik Lihat Data, hehe

Tampilan View Data pada Appinventory

Tampilan View Data pada Appinventory

Dan kita bisa lihat ada data barang di sana. Coba tambahkan beberapa barang lagi.

Tampilan lihat data pada AppInventory

Voila !

Kira-kira seperti itu. 🙂 Silahkan bertanya apabila ada yang kurang jelas 😉

Untuk demo-nya, kalian bisa cek dan download AppInventory di Google Play Store.

Kalian juga bisa download/forking kode aplikasi ini di GitHub saya.

33 Comments

  1. jramdhoni May 19, 2013
  2. abbdul June 4, 2013
    • Herdi Naufal June 5, 2013
  3. Handoko June 6, 2013
  4. ujang June 6, 2013
  5. aagatot August 6, 2013
    • Hafizh Herdi Naufal August 7, 2013
      • MuhRiz January 22, 2014
  6. Chairul December 13, 2013
  7. ridwan March 18, 2014
  8. creatorb April 14, 2014
  9. fikri May 28, 2014
  10. priska June 5, 2014
  11. Ramdhani October 17, 2014
  12. Yusuf Hamdani February 11, 2015
  13. romi March 25, 2015
  14. gill August 14, 2015
  15. fahril August 20, 2015
    • Hafizh Herdi August 20, 2015
  16. hito August 20, 2015
  17. Imroens October 23, 2015
  18. Krisna Ivan H January 3, 2016
    • Hafizh Herdi January 3, 2016
  19. bryan March 11, 2016
  20. anton March 15, 2016
    • Hafizh Herdi March 15, 2016
  21. bayu June 26, 2016
  22. Maz Arif January 17, 2017

Leave a Reply

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