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
pak agus……bila kita mau menggunakan Android Spinner menggunakan database mysql gmn y caranya????mohon tutorialnya lagi pak….
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..
bang agus, aku mw tanya nh, punya referensi buat aplikasi alarm tdk? mohon pencerahannya…
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…. 🙂
mas agus buat tutorial spinner menggunakan mysql dong…. thanks mas agus atas waktunya…..
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
Mantap Kang, Sy pusing nyari di luar Negeri. Dapat pencerahan lewat disini.
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.