Tutorial Android : Menampilkan Data dari Database SQLite ke ListView

Haaahhh, baru bisa posting lagi di hari minggu yang tumben sejuk seperti ini. Kali ini saya nangkring di Lab. Litbang kampus, koneksi internetnya cukup kencang lah. Pokoknya kalo dipake donlod, yang liat pasti ngiler deh :D. Berhubung di rumah TV saya sedang bermasalah, sekalian saja saya nonton TV online dengan koneksi kencang yang nganggur di kampus. Cukup lama juga saya tidak nonton acara TV, biasanya paling nangkringin laptop. Sambil nonton TV online, saya mau berbagi sedikit nih tentang tutorial android. Yupzzz, android. Semoga rekan-rekan gak bosan dengan postingan saya yang akhir-akhir ini membahas tentang android. Kali ini saya akan membahas tentang database SQLite,dimana database ini sudah tersedia langsung di dalam OS android.

Karena memang sama-sama SQL, querynya sama dengan database MySQL. Diawali dengan membuat database, membuat struktur tabel dan memanfaatkan adapter dari SQLiteDatabase untuk melakukan fungsi DML (Data Manipulation Language). Setelah itu, datanya akan ditampilkan ke dalam sebuah ListView dengan memanfaatkan CursorAdapter. Gak usah banyak penjelasan, kita langsung aja ke cara pembuatannya. Cekidot gan….

1. Buat android project baru seperti gambar di bawah ini :

2. Kita akan memanfaatkan SQLiteOpenHelper sebagai class yang berfungsi untuk menangani koneksi ke database. Diantaranya fungsi DDL (Data Definition Language) dan DML. Buat sebuah file class baru dengan nama DBHelper.java yang meng-extends class SQLiteOpenHelper.

public class DBHelper extends SQLiteOpenHelper {
	public DBHelper(Context context) {
		super(context, "sekolah_db", null, 1);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		//db.execSQL("");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		//db.execSQL("");
		onCreate(db);
	}

	public void tambah(SQLiteDatabase db) {
		String[] nama_sis = new String[] { "Gede", "Okky", "Untung", "Puji", "Willy", "Ayus" };
		String[] alamat_sis = new String[] { "Denpasar", "Banyuwangi", "Situbondo", "Rogojampi", "Purwoharjo", "Rogojampi" };
		int lanjut = new Random().nextInt(6);
		String nama_in = nama_sis[lanjut];
		String alamat_in = alamat_sis[lanjut];
		//db.execSQL("");
	}
}

Saya sisipkan sebuah function untuk melakukan input ke dalam tabel, value-nya saya acak dari beberapa string yang saya simpan di dalam sebuah array. Dan fungsi insert ini akan berjalan setiap kali aplikasi dibuka (taruh di event onCreate). Ouw yaw, itu ada syntax yang saya mark, querynya saya hilangkan karena tidak bisa disimpan ke dalam database blog ini :). Untuk melihat query-nya, silahkan donlod saja contoh programnya di akhir postingan ini.

3. Sekarang kita buat sebuah activity yang akan menampilkan data dari dalam database SQLite ke dalam sebuah ListView. Buka file SqliteToListviewActivity.java dan ketikkan code di bawah ini :

public class SqliteToListviewActivity extends ListActivity {

	private SQLiteDatabase db;
	private CursorAdapter data_sumber;
	private static final String kolom[] = {"nama", "alamat",BaseColumns._ID };
	DBHelper helper = new DBHelper(this);

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		ListView view = getListView();
		view.addHeaderView(getLayoutInflater().inflate(R.layout.row, null));
		db = helper.getWritableDatabase();

		this.muat_ulang();
		this.tambahdata();
	}

	public void muat_ulang()
	{
		Cursor data = db.query("bio_siswa", kolom, null, null, null, null,null);
		data_sumber = new SimpleCursorAdapter(this, R.layout.row, data, kolom,new int[] { R.id.nama, R.id.alamat });
		setListAdapter(data_sumber);
	}

	public void tambahdata()
	{
		helper.tambah(db);
		this.muat_ulang();
	}
}

Untuk melakukan query untuk seleksi record dalam database, bisa menggunakan fungsi .rawquery() atau dengan .query(). Dan disini saya menggunakan fungsi .query() karena tidak perlu memasukkan perintah select SQL, .query() mirip dengan pattern active record di CI. Data dari database disimpan terlebih dahulu dalam CursorAdapter. Kemudian ditampilkan ke dalam ListView denga fungsi setListAdapter().

4. Yang terakhir, kita perlu membuat sebuah desain layout untuk menampung data-data dari database. Buat sebuah file layout baru (klik kanan folder layout > New > Android XML File) dan ketikkan kode layout di bawah ini :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_height="wrap_content"
	android:id="@+id/layoutBaris"
	android:orientation="horizontal"
	android:layout_width="fill_parent">

	<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_alignParentLeft="true"
		android:id="@+id/nama"
		android:text="Nama"
		android:textSize="15sp"
		android:padding="10dip" />
	<TextView
		android:layout_width="wrap_content"
		android:layout_alignParentRight="true"
		android:layout_height="wrap_content"
		android:id="@+id/alamat"
		android:text="Alamat"
		android:gravity="right"
		android:textSize="15sp"
		android:padding="10dip" />

</RelativeLayout>

5. Tes aplikasi via emulator, kira-kira hasilnya seperti gambar di bawah ini :

Nah itu langkah-langkah dasar untuk membuat sebuah aplikasi database sederhana dengan memanfaatkan SQLite. Terus terang saja, ketika mencoba untuk membuat aplikasi ini sering mengalami forced close setiap akan mencobanya ke dalam emulatornya :(. Kebanyakan karena kesalahan mengisi parameter dari CursorAdapter dan SqliteOpenHelper nya. Setelah dicoba dan hampir putus asa, akhirnya bisa juga =)). OK deh, sekian dulu postingan saya di hari minggu yang sejuk ini. Semoga bisa bermanfaat untuk rekan-rekan.

Happy Blogging and Keep Coding

Cheerrrsss….!!!!

[to_like]Download Aplikasi[/to_like]

10 comments

  1. arlansandy Reply

    kaka,,,, mohon pencerahannya yah. kalo misal kita punya edit text bertipe double kemudian ingin membuat validasi edit text tersebut tidak kosong, kemudian muncul pesan alert “angka 1 masih kosong”. gmna yah kaka…

  2. chris Reply

    mas/ mbak… kalo memasukan file gambar bagaimana dengan menggunakan DB sqlite atau mysql…. saya masih binggung… mohon pencerahannya…. suwun 🙂

  3. Shiro Reply

    bang saya mau nanya, kalo mau nampilin data dari database mysql di android berupa pilihan ganda gmna ya caranya. Jadi nampilin Soal, dan pilihan jawabannya berupa pilihan ganda dari A-E….Terima Kasih sebelumnya, sukses selalu buat Gede lumbung

  4. shurahman Reply

    ini errornya : java.lang.runtimeexception unable to start activity

    kira2 dimana yah