Tutorial Android Spinner From Database

Jumpa Lagi dengan Agus Haryanto dalam seri tutorial Android. Pada tutorial terdahulu kita pernah membuat spinner (Combo Box) di android, tetapi pada saat itu kita menggunakan Array untuk data spinnernya. Nah diantara pembaca blog ini ada yang bertanya bagaiman kalau data spinnernya bersumber dari database. Sebelum lebih jauh, mari kita pikirkan kenapa sih kok harus dari database ?. silahkan dijawab masing-masing yah 🙂

Sekarang mari kita buat contoh project yang menampilkan spinner dengan data yang bersumber dari database

1. Buat lah Project dengan Nama SpinnerFromDatabase

2. Klik directory res/value lalu edit file string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, SpinnerFromDatabaseActivity!</string>
    <string name="app_name">SpinnerFromDatabase</string>
     <string name="spinner_wisata_prompt">Pilih Tempat Wisata</string>

</resources>

3. Klik directory res/layout lalu edit main.xnl

<?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="Spinner from database"
    />

<Spinner
	android:id="@+id/my_wisata_spinner"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:drawSelectorOnTop="true"
	android:prompt="@string/spinner_wisata_prompt"
/>

</LinearLayout>

4. Masih pada directrory res/layout, buat file baru dengan nama db_view_row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView
        android:id="@+id/tvDBViewRow"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:text=""
        android:textColor="#000000"
        android:textSize="25dp" >
    </TextView>

</LinearLayout>

5. Masuk directory src lalu buat class (file) baru dengan nama DatabaseHelper.java

package com.agusharyanto.net.spinnerdb;

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

	}
}


6. Edit File SpinnerFromDatabaseActivity.java

package com.agusharyanto.net.spinnerdb;

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

public class SpinnerFromDatabaseActivity extends Activity {
	private DatabaseHelper dbhelper;
	private SQLiteDatabase db = 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);
		isiDataSpinner();

	}

	private void isiDataSpinner() {
		Cursor wisataCursor;
		Spinner colourSpinner = (Spinner) findViewById(R.id.my_wisata_spinner);
		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 'tvDBViewRow' from our new db_view_row.xml
		 * layout above)
		 */
		int[] to = new int[] { R.id.tvDBViewRow };

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

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

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

		}
	}

}

7. Saatnya Run Project, Berikut Hasilnya

Nah, Mudahkan ayo semangat belajar Android.

Dari bawah kalau kita lihat puncak suatu gunung, tentu kita akan berfikir mungkin nggak yah kita bisa sampai kepuncaknya. Banyak yang berfikir dalam hati wah terlalu tinggi gunung ini aku kira, aku takkan sanggup mendakinya, nanti kakiku bisa lecet dan kakiku pegal-pegal.

Tetapi apabila naik kepuncak gunung dijadikan sayembara, Barang siapa yang paling cepat sampai kepuncak gunung akan dinikahkan dengan puteri raja yang cantik jelita. Tentunya banyak yang berfikir aku harus bisa menjadi yang pertama sampai kepuncak gunung. Pikiran tak sanggup mendaki hilang seketika berganti menjadi bersemangat untuk mendaki dan menjadi orang yang pertama sampai kepuncak.

Semoga kita lebih bersemangat dalam menggapai cita-cita 🙂

untuk source code lengkapnya

Semoga Bermanfaat

Salam hangat

Agus Haryanto

sumber:

http://androidforbeginners.blogspot.com/2010/02/how-to-populate-spinner-widget-from.html

10 comments to Tutorial Android Spinner From Database

  • pak agus……bila kita mau menggunakan Android Spinner menggunakan database mysql gmn y caranya????mohon tutorialnya lagi pak….

  • leo

    Mas.. mo nanya, misal jika kita punya data-data suatu lokasi dalam database kemudian pengin ditampilin kedalam peta, methodnya seperti apa ya mas?? makasih…

  • pakkk…tutorial spinernya pak..

  • vxlienz

    bang agus, aku mw tanya nh, punya referensi buat aplikasi alarm tdk? mohon pencerahannya…

  • hais

    Bang,aku pengen buat aplikasi client server android.Tapi aku pengennya database di server (mysql) bisa sinkron dengan database di client android (sqlite).Kira2 gimana caranya ya bang? Aku udah searching kemana2,tapi gak dapat2.Sempat aku nemuin ada juga yang nanya yang serupa dengan masalah saya,tapi gak ada yang jawab.

    Sebelumnya thanks ya bang…. 🙂

  • Miky

    mas agus buat tutorial spinner menggunakan mysql dong…. thanks mas agus atas waktunya…..

  • imam nur

    Terima kasih mas atas tutorialnya,,
    oh ya, saya mau tanya, kalau saya membuat 2 spinner dalam satu database bisa ga ya?
    mslkan spinner untuk jenis sepeda motor dan spinner untuk jenis bahan bakar..
    saya sudah coba, project tidak ada yang error namun pada saat di running project stoped gtu mas..
    mohon pencerahannya mas.. big thanks before.. 🙂

  • Terimakasih kang tutorialnya
    saya coba dulu heheh

  • Ahyan

    Mantap Kang, Sy pusing nyari di luar Negeri. Dapat pencerahan lewat disini.

  • Ahyan

    Mas Agus,

    String barang = SpinBarang.getSelectedItem().toString();
    ContentValues inputdb=new ContentValues();
    inputdb.put(BARANG, spbarang);
    db.insert(“shop”, NAMA, inputdb);

    Aku malah dapat hasil “com.android.blabla@id9999bla”. Pusing neh.

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>