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
mas bagian listContent.setAdapter(wisataAdapter);
wisataAdapter darimana yach? udah dicari apa saya yang bingung atau gimana?
mas kalo pencarian tapi di tampilkan dalam bentuk listview gmn????datanya diambil dari database
pak agus, kalo ada keterangan kaya gini knp yah “08:57:05 – ListViewSQlite] Android requires compiler compliance level 5.0 or 6.0. Found ‘1.7’ instead. Please use Android Tools > Fix Project Properties.”
atau sperti ini screenshot nya ====> http://i47.tinypic.com/wvpzqr.png
saya sering import langsung, kejadiannya kadang-kadang kaya gitu pak 🙁
mohon masukan nya yah 😀
Thanks.
Kok ga di jelasin Fungsi2 fungsi penting dari koding nya.
ini mah bukan belajar.. tapi di suapin.. haahhaa
gak tau kenapa ?
kesel sama orang2 yang komen menjatuhkan kayak atas ane..
Mas. Bs dibuatkan tutorial android ttg database relational dg sqlite?
mas, ini kan hanya menampilkan data.
kalo listviewnya dijadikan menu bagaimana caranya mas? data tetap diambil dari database.
jd bisa di klik dan pindah ke halaman lain.
mohon bantuannya..
terima kasih..
mas itu kalo masukkin datanya kan 1 per 1 kan?
ada gak tutorial yg datanya dimasukkin pake sqlite browser nanti databasenya dipanggil di javanya?karna kan sedikit ribet tuh kalo dimasukkan kata 1 per 1..
mohon bantuannya..
makasih
mas agus,
saya mau nannya nih kenapa kalo list viewnya kalo di drag gitu jadi warna item gitu?apa mesti di pakein scroll gitu.
makasi
Pak Agus, coding diatas sudah saya buat dan bisa jalan.
Tapi saya mau tanya gimana caranya menambahkan agar listview itu bisa untuk menampilkan class yang lain.
saya sudah coba pake intent tapi ga bisa2.
mohon pencerahannya pak.
mas bisa gak posting judul tugas akhir yang berbasis android
Mas kalau mau buat listview-nya bisa di klik truz ke class dan menampilkan layout lain gimana caranya ? 🙂
pak,,, kalo masukkin file suara ke sqlitenya gmna pak,,, supaya biar dipanggil lewat listview nya,,, trimakasih mohon pencerahannya
semua yang mas agus berikan selalu bermanfaat. makasi ya mas!!
startManagingCursor() is deprecated
baiknya perubahan yang dilakukan gmn kang?
bagus sekali. saya juga punya artikel dan tutorial terkait dengan SQLite. semoga bisa menjadi bahan belajar juga untuk pemula
http://udinulis.blogspot.com/2010/02/sqlite-si-simple-yang-bertenaga.html