Belajar Android ListView dengan database sqlite

Belajar Android lagi yuk,  Kalau pada tutorial yang lalu kita sudah berhasil mebuat Spinner yang isinya diambil dari database, rasanya alan terasa lebih mantap jika kita dapat membuat listview yang isinya juga diambil dari database, kalau bahasa jawanya “populate listview from sqlite database”

Sekarang mari kita ikuti langkah-langkah berikut ini.

1. Buat Project dengan nama “ListViewSQlite”

2. Edit file main.xml, lalu ketikkan kode berikut.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="Daftar Tempat Wisata"
  />
<ListView
android:id="@+id/wisatalist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>

3. Pada directory layout, buat file baru dengan nama “row.xml”, lalau ketikkan kode berikut.

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/txtwisata"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"/>

4. Pada direktori src, buat file (class) baru dengan nama “DatabaseHelper.java” lalu ketikkan kode berikut.

package com.agusharyanto.net.lvsqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
	private static final String DATABASE_NAME = "dbwisata";
	public static final String NAMA = "nama";
	public static final String KEY_ID = "_id";

	public DatabaseHelper(Context context) {
		super(context, DATABASE_NAME, null, 1);
	}

	// method createTable untuk membuat table WISATA
	public void createTable(SQLiteDatabase db) {
		db.execSQL("DROP TABLE IF EXISTS WISATA");
		db.execSQL("CREATE TABLE if not exists WISATA (_id INTEGER PRIMARY KEY AUTOINCREMENT, "
				+ "nama TEXT);");
	}

	// method generateData untuk mengisikan data ke table Wisata.
	public void generateData(SQLiteDatabase db) {
		ContentValues cv = new ContentValues();
		cv.put(NAMA, "Ancol");
		db.insert("WISATA", NAMA, cv);
		cv.put(NAMA, "Ragunan");
		db.insert("WISATA", NAMA, cv);
		cv.put(NAMA, "Taman Mini");
		db.insert("WISATA", NAMA, cv);
	}

	// method delAllAdata untuk menghapus data di table Wisata.
	public void delAllData(SQLiteDatabase db) {
		db.delete("WISATA", null, null);
	}

	public Cursor fetchAllWisata(SQLiteDatabase db) {
		return db.query("WISATA", new String[] { KEY_ID, NAMA }, null, null,
				null, null, null);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		createTable(db);

	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub

	}
}



5. Edit File “ListViewSQliteActivity.java” dan ektikkan kode berikut

package com.agusharyanto.net.lvsqlite;

import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class ListViewSQliteActivity extends Activity {
	private DatabaseHelper dbhelper;
	private SQLiteDatabase db = null;
	private ListView listContent = null;
    /** Called when the activity is first created. */
    @Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		dbhelper = new DatabaseHelper(this);
		db = dbhelper.getWritableDatabase();
		dbhelper.delAllData(db);
		dbhelper.generateData(db);
		setContentView(R.layout.main);
		listContent = (ListView) findViewById(R.id.wisatalist);
		isDataListView();
	}

    private void isDataListView() {
    	Cursor wisataCursor;

    	wisataCursor = dbhelper.fetchAllWisata(db);

    	startManagingCursor( wisataCursor);
    	/*Create an array to specify the fields we want to display in the list (only the 'NAMA' column in this case) */
    	String[] from = new String[]{dbhelper.NAMA};
    	/* and an array of the fields we want to bind those fields to (in this case just the textView 'txtwisata' from our new row.xml layout above) */
    	int[] to = new int[]{R.id.txtwisata};

    	/* Now create a simple cursor adapter.. */
    	SimpleCursorAdapter wisataAdapter =
    	new SimpleCursorAdapter(this, R.layout.row, wisataCursor, from, to);

    	/* and assign it to our Spinner widget */
    	listContent.setAdapter(wisataAdapter);
    	}

    @Override
	public void onDestroy() {
		super.onDestroy();
		try {
			db.close();
		}catch (Exception e){

		}
	}

}

6. Kita telah menyelesaikan semuanya, sekarang mari kita run projectnya, jika semu saudah benar, maka hasilnya akan seperti ini

I challenge you to make your life a masterpiece. I challenge you to join the ranks of those people who live what they teach, who walk their talk. (Tony Robins)

untuk source code lengkapnya
Semoga Bermanfaat Salam Hangat Agus Haryanto

16 comments to Belajar Android ListView dengan database sqlite

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>