Langsung saja, pertama-tama kita buat sebuah project Android baru terlebih dahulu. Nama package nya terserah, tapi pada program ini nama package-nya adalah id.twooh.appinventory. Silahkan nanti disesuaikan. Kemudian, karena aplikasi ini menggunakan paradigma MV . Maka kita akan buat kelas modelnya, yaitu kelas Barang.java. Kelas barang ber!ungsi untuk mende!inisikan objek barang beserta !ungsi-!ungsi dan atributatributnya. "ah seperti barang pada umumnya, mereka mempunyai nama, #$, merk, dan sebagainya. #nilah kode untuk kelas Barang.java.
package id.twooh.appinventory; public class Barang { private private private private long id; String nama_barang; String merk_barang; String harga_barang;
public Barang() { } !! ! "return the id ! public long get#d() { return id; } !! ! "param id the id to set ! public void set#d(long id) { this.id $ id; } !! ! "return the nama_barang ! public String get%ama_barang() {
return nama_barang;
!! ! "param nama_barang the nama_barang to set ! public void set%ama_barang(String nama_barang) { this.nama_barang $ nama_barang; } !! ! "return the merk_barang ! public String get&erk_barang() { return merk_barang; } !! ! "param merk_barang the merk_barang to set ! public void set&erk_barang(String merk_barang) { this.merk_barang $ merk_barang; } !! ! "return the harga_barang ! public String get'arga_barang() { return harga_barang; } !! ! "param harga_barang the harga_barang to set ! public void set'arga_barang(String harga_barang) { this.harga_barang $ harga_barang; } "(verride public String toString() { return )Barang )* nama_barang *) )* merk_barang * ) )* harga_barang; } }
%ke, Model nya sekarang sudah ada. Sederhana bukan& Kelas tersebut hanya berisi atribut dan !ungsi-!ungsi getter dan setter. Setelah kelas barang selesai dibuat, kita akan melanjutkan dengan membuat kelas Database Helper.
Database Helper
Sesuai namanya, kelas ini ber!ungsi untuk memudahkan kita dalam membuat dan mengakses database S'Lite yang akan dipakai oleh aplikasi. Kelas ini kebanyakan berisi method-method berkaitan dengan manajemen database, seperti onUpgrade() dan on reate(). Database Helper sebenarnya sudah kita ada kelasnya pada Android, ini yaitu dari
tinggal
meng-e%tends kelas
kelas !"#ite$penHelper, atau dengan kata lain, melakukan pe(arisan. #nilah kode untuk kelas DBHelper.java )
package id.twooh.appinventory; deklarasi import package import android.content.+onte,t; import android.database.s-lite.S./ite0atabase; import android.database.s-lite.S./ite(pen'elper; import android.util./og; public class 0B'elper e,tends S./ite(pen'elper{ !! deklarasi konstanta1konstanta yang digunakan pada database2 seperti nama tabel2 nama1nama kolom2 nama database2 dan versi dari database !! public static 3inal String 45B/6_%5&6 $ )data_inventori); public static 3inal String +(/7&%_#0 $ )_id); public static 3inal String +(/7&%_%5&6 $ )nama_barang); public static 3inal String +(/7&%_&689 $ )merk_barang); public static 3inal String +(/7&%_'58:5 $ )harga_barang); private static 3inal String db_name $)inventori.db); private static 3inal int db_version$;; <erintah S./ untuk membuat tabel database baru private static 3inal String db_create $ )create table ) * 45B/6_%5&6 * )() * +(/7&%_#0 *) integer primary key autoincrement2 ) * +(/7&%_%5&6* ) varchar(=>) not null2 ) * +(/7&%_&689* ) varchar(=>) not null2 ) * +(/7&%_'58:5* ) varchar(=>) not null);); public 0B'elper(+onte,t conte,t) { super(conte,t2 db_name2 null2 db_version); 5uto generated }
mengeksekusi perintah S./ di atas untuk membuat tabel database baru "(verride public void on+reate(S./ite0atabase db) { db.e,ecS./(db_create); } di?alankan apabila ingin mengupgrade database "(verride public void on7pgrade(S./ite0atabase db2 int old@ersion2 int new@ersion) { /og.w(0B'elper.class.get%ame()2)7pgrading database 3rom version ) * old@ersion * ) to ) * new@ersion * )2 which will destroy all old data)); db.e,ecS./()08(< 45B/6 #A 6B#S4S ) * 45B/6_%5&6); on+reate(db); } }
%ke, seperti yang bisa kita lihat di atas. Kelas DBHelper.java kebanyakan berisi konstantakonstanta seperti nama tabel, nama database, nama kolom, dan sebagainya. *al ini untuk memudahkan kita nantinya. $imana ketika ingin menggunakan konstanta tersebut, kita tidak usah lagi menulis nama tabel berulang kali, namun cukup dengan mengaksesnya dari kelas DBHelper. Kemudian ada juga konstanta berupa !"# statement, yang untuk mereka yang ahli database, sebenarnya perintah itu digunakan untuk membuat tabel database baru. +erintah S'L tersebut kemudian akan dieksekusi pada method on reate(). Kira-kira sekian dulu postingan malam hari ini. ,utorial nanti akan dilanjutkan kembali. -ika ada yang ingin ditanyakan, silahkan tulis saja di kolom komentar. Semoga berguna.
men&.%ml ) ber!ungsi untuk membuat sebuah layout main men& create'data.%ml ) ber!ungsi sebagail layout untuk tampilan input data DBData!o&rce.java ) ber!ungsi sebagai ontroller, kelas inilah yang nantinya berguna untuk melakukan operasi-operasi pada database, termasuk operasi reate Data
+ertama-tama, kita akan membuat kelas Menu terlebih dahulu, karena itu kita butuh !ile layo&t) nya. 0uka !older res*layo&t pada proyek kalian, dan buat sebuah !ile %ml baru dengan nama men&.%ml #sikan kode berikut )
CD,ml version$);.>) encoding$)ut31E)DF C8elative/ayout ,mlnsGandroid$)httpG schemas.android.com apk res android) androidGlayout_width$)match_parent) androidGlayout_height$)match_parent) androidGorientation$)vertical) F C4e,t@iew androidGid$)"*id nama_app) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_center'oriHontal$)true)
androidGlayout_center@ertical$)true) androidGte,tSiHe$)I>sp) androidGte,t$)twoh.web.id) F CButton androidGid$)"*id button_tambah) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_below$)"id nama_app) androidGlayout_center'oriHontal$)true) androidGte,t$)4ambah 0ata) F C 8elative/ayoutF
"ups, kali ini layout di atas menggunakan 1elati/e Layout supaya mudah mengatur posisinya. Layout di atas hanya berisi Nama Aplikasi dan sebuah tombol untuk +ambah Data. Setelah itu, kita akan membuat kelas Main Menunya, buat sebuah activity
public class &enu e,tends 5ctivity implements (n+lick/istener{ private Button b4ambah; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.menu); b4ambah $ (Button) 3ind@iewBy#d(8.id.button_tambah); b4ambah.set(n+lick/istener(this); } "(verride public void on+lick(@iew v) { 4(0( 5uto1generated method stub switch(v.get#d()) { case 8.id.button_tambah G #ntent i $ new #ntent(this2 +reate0ata.class);
start5ctivity(i); break; } } }
Kelas ini ber!ungsi untuk menampilkan tombol 2,ambah $ata3, yang apabila kita klik akan berpindah ke ,ctivity reate Data. Karena kelas reate Data nya belum ada, selanjutnya kita
akan membuat kelas tersebut. Namun kita akan membuat !ile %ml layout-nya terlebih dahulu, yang bernama create'data.%ml )
C/inear/ayout ,mlnsGandroid$)httpG schemas.android.com apk res android) ,mlnsGtools$)httpG schemas.android.com tools) androidGlayout_width$)match_parent) androidGlayout_height$)match_parent) androidGorientation$)vertical) F C6dit4e,t androidGid$)"*id nama_barang) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_margin4op$);=dp) androidGinput4ype$)te,t) androidGhint$%ama Barang) androidGems$);>) F Cre-uestAocus F C 6dit4e,tF C6dit4e,t androidGid$)"*id merk_barang) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_margin4op$);=dp) androidGinput4ype$)te,t) androidGhint$)&erk Barang) androidGems$);>) F Cre-uestAocus F C 6dit4e,tF C6dit4e,t androidGid$)"*id harga_barang) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_margin4op$);=dp) androidGinput4ype$)number) androidGhint$)'arga Barang) androidGems$);>) F
Cre-uestAocus C 6dit4e,tF
Layout di atas berisi -dit+e%t yang ber!ungsi sebagai (adah inputan tiga buah in!ormasi dasar, yaitu nama barang, merk barang dan harga barang, dan sebuah tombol submit di ba(ahnya. Setelah itu, kita akan buat ,ctivity reateData. Akti/itas ini ber!ungsi sebagai
.iew dalam paradigma Model-Vie(- ontroller yang kita gunakan. Atau dengan kata lain kelas ini menyediakan sebuah inter!ace untuk menambahkan barang. Langsung saja kita buat kelas baru bernama reateData.java
package id.twooh.appinventory; import import import import import import import android.os.Bundle; android.app.5ctivity; android.view.@iew; android.view.@iew.(n+lick/istener; android.widget.Button; android.widget.6dit4e,t; android.widget.4oast;
public class +reate0ata e,tends 5ctivity implements (n+lick/istener{ inisilisasi elemen1elemen pada layout private Button buttonSubmit; private 6dit4e,t ed%ama; private 6dit4e,t ed&erk; private 6dit4e,t ed'arga; inisialisasi kontroller 0ata Source private 0B0ataSource dataSource; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.create_data); buttonSubmit $ (Button) 3ind@iewBy#d(8.id.buttom_submit); buttonSubmit.set(n+lick/istener(this); ed%ama $ (6dit4e,t) 3ind@iewBy#d(8.id.nama_barang); ed'arga $ (6dit4e,t) 3ind@iewBy#d(8.id.harga_barang); ed&erk $ (6dit4e,t) 3ind@iewBy#d(8.id.merk_barang);
instanstiasi kelas 0B0ataSource dataSource $ new 0B0ataSource(this); membuat sambungan baru ke database dataSource.open(); } 964#95 4ombol Submit 0iklik "(verride public void on+lick(@iew v) { #nisialisasi data barang String nama $ null; String merk $ null; String harga $ null; "SuppressJarnings()unused)) inisialisasi barang baru (masih kosong) Barang barang $ null; i3(ed%ama.get4e,t()K$null LL ed&erk.get4e,t()K$null LL ed'arga.get4e,t()K$null) { ! ?ika 3ield nama2 merk2 dan harga tidak kosong ! maka masukkan ke dalam data barang! nama $ ed%ama.get4e,t().toString(); merk $ ed&erk.get4e,t().toString(); harga $ ed'arga.get4e,t().toString(); } switch(v.get#d()) { case 8.id.buttom_submitG insert data barang baru barang $ dataSource.createBarang(nama2 merk2 harga); kon3irmasi kesuksesan 4oast.make4e,t(this2 )masuk BarangMn) * )nama) * barang.get%ama_barang() )merk) * barang.get&erk_barang()
* *
Nah, sekarang kita sudah membuat sebuah inter!ace4antar muka untuk menginputkan data. "ang kita perlukan sekarang adalah sebuah ontroller yang akan menyambungkan inter!ace tersebut dengan database yang kita buat. -ika kalian copy pastekan kode di atas akan ada error, tapi
biarkan saja. Karena error tersebut disebabkan oleh kelas kontroler DBData!o&rce yang belum kita buat. Salah satu error yang muncul adalah pada bagian inisialiasi DBData!o&rce seperti berikut )
private 0B0ataSource dataSource;
%ke, langsung kita buat saja !ile baru bernama DBData!o&rce.java. Kodenya seperti berikut )
package id.twooh.appinventory; import import import import import import import ?ava.util.5rray/ist; android.content.+ontent@alues; android.content.+onte,t; android.database.+ursor; android.database.S./6,ception; android.database.s-lite.S./ite0atabase; android.util./og;
public class 0B0ataSource { inisialiasi S./ite 0atabase private S./ite0atabase database; inisialisasi kelas 0B'elper private 0B'elper db'elper; ambil semua nama kolom private StringNO all+olumns $ { 0B'elper.+(/7&%_#02 0B'elper.+(/7&%_%5&62 0B'elper.+(/7&%_&68920B'elper.+(/7&%_'58:5}; 0B'elper diinstantiasi pada constructor public 0B0ataSource(+onte,t conte,t) { db'elper $ new 0B'elper(conte,t); } membuka membuat sambungan baru ke database public void open() throws S./6,ception { database $ db'elper.getJritable0atabase(); } menutup sambungan ke database public void close() { db'elper.close(); } method untuk create insert barang ke database public Barang createBarang(String nama2 String merk2 String harga) {
membuat sebuah +ontent@alues2 yang ber3ungsi untuk memasangkan data dengan nama1nama kolom pada database +ontent@alues values $ new +ontent@alues(); values.put(0B'elper.+(/7&%_%5&62 nama); values.put(0B'elper.+(/7&%_&6892 merk); values.put(0B'elper.+(/7&%_'58:52 harga); mengeksekusi perintah S./ insert data yang akan mengembalikan sebuah insert #0 long insert#d $ database.insert(0B'elper.45B/6_%5&62 null2 values); setelah data dimasukkan2 memanggil perintah S./ Select menggunakan +ursor untuk melihat apakah data tadi benarI sudah masuk dengan menyesuaikan #0 $ insert#0 +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 0B'elper.+(/7&%_#0 * ) $ ) * insert#d2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); mengubah ob?ek pada kursor pertama tadi ke dalam ob?ek barang Barang newBarang $ cursor4oBarang(cursor); close cursor cursor.close(); mengembalikan barang baru return newBarang;
private Barang cursor4oBarang(+ursor cursor) { buat ob?ek barang baru Barang barang $ new Barang(); debug /(:+54 /og.v()in3o)2 )4he get/(%: )*cursor.get/ong(>)); /og.v()in3o)2 )4he set/at/ng )*cursor.getString(;)*)2)*cursor.getString(I)); ! Set atribut pada ob?ek barang dengan ! data kursor yang diambil dari database! barang.set#d(cursor.get/ong(>)); barang.set%ama_barang(cursor.getString(;)); barang.set&erk_barang(cursor.getString(I)); barang.set'arga_barang(cursor.getString(P)); kembalikan sebagai ob?ek barang return barang;
} }
5ntuk penjelasan tiap baris kodenya, bisa dibaca pada komentar-komentar yang ada di atas. Adapun cara kerjanya sebagai berikut, pertama-tama kita kembali ke kelas reateData.java. Apabila kita telah mengisi data barang dan mengklik tombol submit, data barang tersebut akan dilempar ke ontroller. Kemudian kontroler akan menerima inputan data barang tersebut dan memasangkannya sesuai dengan nama kolom pada database
menggunakan ontent.al&es. 5ntuk selanjutnya dimasukkan ke database. Setelah dimasukkan, data akan dicek kembali menggunakan !"# select yang mengembalikan data berupa &rsor. $ata kursor tersebut kemudian akan diubah menjadi objek barang, dan dilemparkan lagi ke kelas reateData untuk kemudian mengkon!irmasikan data apa saja yang barusan kita masukkan. "ang terakhir, kita akan memodi!ikasi ,ndroid Mani(est. Kita pindahkan intent (ilter la&ncher nya ke Acti/ity Menu supaya akti/itas tersebut yang dijalankan pertama kali apabila aplikasi dibuka.
Cmani3est ,mlnsGandroid$)httpG schemas.android.com apk res android) package$)id.twooh.appinventory) androidGversion+ode$);) androidGversion%ame$);.>) F Cuses1sdk androidGminSdk@ersion$)E) androidGtargetSdk@ersion$);=)
Capplication androidGicon$)"drawable ic_launcher) androidGlabel$)"string app_name) androidGtheme$)"style 5pp4heme) F Cactivity androidGname$)id.twooh.appinventory.+reate0ata) androidGlabel$)"string title_activity_main) F C activityF Cactivity androidGname$).&enu) androidGlabel$)"string title_activity_main) F Cintent13ilterF
Caction androidGname$)android.intent.action.&5#%)
F F
Android Database SQLite Tutorial (III) : Membuat Fungsi Vie !"ead Data Membuat #itur Li$at Data
%ke, langsung saja, pada tutorial kali ini kita akan menambahkan !itur lihat data barang pada aplikasi in/entaris yang akan kita buat. +ertama-tama kita akan memperbarui !ile layout men&.%ml dengan menambahkan satu buah tombol #ihat Data. %h iya, sebelumnya buka dulu !ile val&es*strings.%ml untuk memasukkan konstanta-konstanta String yang digunakan pada aplikasi, hal ini dilakukan supaya aplikasi ini memenuhi standar aplikasi Android yang baik. 6ile val&es*strings.%ml
CresourcesF Cstring name$)app_name)F5pp#nventoryC stringF Cstring name$)nama_app)Ftwoh.web.idC stringF Cstring name$)hello_world)F'ello worldKC stringF Cstring name$)menu_settings)FSettingsC stringF Cstring name$)title_activity_main)F5pp#nventoryC stringF Cstring name$)barang_hint)F%ama BarangC stringF Cstring name$)harga_hint)F'arga BarangC stringF Cstring name$)merk_hint)F&erk BarangC stringF Cstring name$)tombol_submit)FSubmitC stringF Cstring name$)tombol_tambah)F4ambah 0ataC stringF Cstring name$)tombol_lihat)F/ihat 0ataC stringF Cstring name$)title_view)F0ata BarangC stringF C resourcesF
CD,ml version$);.>) encoding$)ut31E)DF C8elative/ayout ,mlnsGandroid$)httpG schemas.android.com apk res android) androidGlayout_width$)match_parent) androidGlayout_height$)match_parent) androidGorientation$)vertical) F C4e,t@iew androidGid$)"*id nama_app) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_center'oriHontal$)true) androidGlayout_center@ertical$)true) androidGte,tSiHe$)I>sp) androidGte,t$)"string nama_app) F CButton androidGid$)"*id button_tambah) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_below$)"id nama_app) androidGlayout_center'oriHontal$)true) androidGte,t$)"string tombol_tambah) F CButton androidGid$)"*id button_view) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGlayout_below$)"id button_tambah) androidGlayout_center'oriHontal$)true) androidGte,t$)"string tombol_lihat) F C 8elative/ayoutF
Setelah itu, kita update juga !ile acti/ity Menu.ja/a-nya. opy pastekan kode di ba(ah ini
package id.twooh.appinventory; import import import import import import android.app.5ctivity; android.content.#ntent; android.os.Bundle; android.view.@iew; android.view.@iew.(n+lick/istener; android.widget.Button;
public class &enu e,tends 5ctivity implements (n+lick/istener{ private Button b4ambah; private Button b/ihat; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.menu);
} "(verride public void on+lick(@iew v) { 4(0( 5uto1generated method stub switch(v.get#d()) { case 8.id.button_tambah G #ntent i $ new #ntent(this2 +reate0ata.class); start5ctivity(i); break; case 8.id.button_view G #ntent iI $ new #ntent(this2 @iew0ata.class); start5ctivity(iI); break; } }
Kita menambahkan button kedua, yaitu b&tton'view, yang apabila di-klik akan memba(a kita ke akti/itas .iewData yang akan kita buat. Apabila ada error, biarkan saja untuk sementara. %ke, sekarang kita akan meng- &pdate kontroller aplikasi, yaitu !ile Data!o&rce.java untuk menambahkan !ungsi get,llBarang() yang ber!ungsi untuk mengambil semua data barang dari database. Seperti inilah !ungsinya. ,ambahkan pada bagian sebelum kurung tutup terakhir )
mengambil semua data barang public 5rray/istCBarangF get5llBarang() { 5rray/istCBarangF da3tarBarang $ new 5rray/istCBarangF(); select all S./ -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 null2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); ?ika masih ada data2 masukkan data barang ke da3tar barang while (Kcursor.is53ter/ast()) { Barang barang $ cursor4oBarang(cursor); da3tarBarang.add(barang); cursor.move4o%e,t(); } &ake sure to close the cursor
public class 0B0ataSource { inisialiasi S./ite 0atabase private S./ite0atabase database; inisialisasi kelas 0B'elper private 0B'elper db'elper; ambil semua nama kolom private StringNO all+olumns $ { 0B'elper.+(/7&%_#02 0B'elper.+(/7&%_%5&62 0B'elper.+(/7&%_&68920B'elper.+(/7&%_'58:5}; 0B'elper diinstantiasi pada constructor public 0B0ataSource(+onte,t conte,t) { db'elper $ new 0B'elper(conte,t); } membuka membuat sambungan baru ke database public void open() throws S./6,ception { database $ db'elper.getJritable0atabase(); } menutup sambungan ke database public void close() { db'elper.close(); } method untuk create insert barang ke database public Barang createBarang(String nama2 String merk2 String harga) { membuat sebuah +ontent@alues2 yang ber3ungsi untuk memasangkan data dengan nama1nama kolom pada database +ontent@alues values $ new +ontent@alues(); values.put(0B'elper.+(/7&%_%5&62 nama); values.put(0B'elper.+(/7&%_&6892 merk); values.put(0B'elper.+(/7&%_'58:52 harga);
mengeksekusi perintah S./ insert data yang akan mengembalikan sebuah insert #0 long insert#d $ database.insert(0B'elper.45B/6_%5&62 null2 values); setelah data dimasukkan2 memanggil perintah S./ Select menggunakan +ursor untuk melihat apakah data tadi benarI sudah masuk dengan menyesuaikan #0 $ insert#0 +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 0B'elper.+(/7&%_#0 * ) $ ) * insert#d2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); mengubah ob?ek pada kursor pertama tadi ke dalam ob?ek barang Barang newBarang $ cursor4oBarang(cursor); close cursor cursor.close(); mengembalikan barang baru return newBarang;
private Barang cursor4oBarang(+ursor cursor) { buat ob?ek barang baru Barang barang $ new Barang(); debug /(:+54 /og.v()in3o)2 )4he get/(%: )*cursor.get/ong(>)); /og.v()in3o)2 )4he set/at/ng )*cursor.getString(;)*)2)*cursor.getString(I)); ! Set atribut pada ob?ek barang dengan ! data kursor yang diambil dari database! barang.set#d(cursor.get/ong(>)); barang.set%ama_barang(cursor.getString(;)); barang.set&erk_barang(cursor.getString(I)); barang.set'arga_barang(cursor.getString(P)); kembalikan sebagai ob?ek barang return barang; mengambil semua data barang public 5rray/istCBarangF get5llBarang() { 5rray/istCBarangF da3tarBarang $ new 5rray/istCBarangF(); select all S./ -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 null2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst();
?ika masih ada data2 masukkan data barang ke da3tar barang while (Kcursor.is53ter/ast()) { Barang barang $ cursor4oBarang(cursor); da3tarBarang.add(barang); cursor.move4o%e,t(); } &ake sure to close the cursor cursor.close(); return da3tarBarang; } }
Kontroller sudah diperbarui, sekarang tinggal membuat view baru untuk menampilkan data barang yang ada pada database. Kita akan membuat layoutnya dulu, buat !ile 7ml layout baru dengan nama viewdata.%ml. $an isikan kode berikut )
CD,ml version$);.>) encoding$)ut31E)DF C/inear/ayout ,mlnsGandroid$)httpG schemas.android.com apk res android) androidGlayout_width$)3ill_parent) androidGlayout_height$)3ill_parent) androidGorientation$)vertical) F C4e,t@iew androidGid$)"*id data_view) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGte,t$)"string title_view) androidGlayout_gravity$)center_horiHontal) androidGbackground$)Q>>>>33) F C/ist@iew androidGid$)"androidGid list) androidGlayout_width$)match_parent) androidGlayout_height$)wrap_content) F C /inear/ayoutF
Kita menggunakan ListVie( layout untuk menampilkan data barang pada aplikasi. Setelah itu, kita akan membuat !ile acti/ity-nya bernama .iewData.java. +ada kelas tersebut, data barang yang diambil akan dimasukkan ke dalam ArrayList yang nantinya akan diset
import ?ava.util.5rray/ist; import android.app./ist5ctivity; import android.os.Bundle; import android.widget.5rray5dapter; public class @iew0ata e,tends /ist5ctivity { inisialisasi kontroller private 0B0ataSource dataSource; inisialisasi arraylist private 5rray/istCBarangF values; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.viewdata); dataSource $ new 0B0ataSource(this); buka kontroller dataSource.open(); ambil semua data barang values $ dataSource.get5llBarang(); masukkan data barang ke array adapter 5rray5dapterCBarangF adapter $ new 5rray5dapterCBarangF(this2 android.8.layout.simple_list_item_;2 values); set adapter pada list set/ist5dapter(adapter);
} }
"ang terakhir adalah memodi!ikasi Android Mani!est dengan menambahkan .iew Data ke dalam da!tar akti/itas. 0uka !ile ,ndroidMani(est dan masukkan kode berikut )
Cmani3est ,mlnsGandroid$)httpG schemas.android.com apk res android) package$)id.twooh.appinventory) androidGversion+ode$);) androidGversion%ame$);.>) F Cuses1sdk androidGminSdk@ersion$)E) androidGtargetSdk@ersion$);=)
Capplication androidGicon$)"drawable ic_launcher) androidGlabel$)"string app_name) androidGtheme$)"style 5pp4heme) F Cactivity androidGname$)id.twooh.appinventory.+reate0ata) androidGlabel$)"string title_activity_main) F
F F
Ccategory androidGname$)android.intent.category./57%+'68) C intent13ilterF C activityF Cactivity androidGname$).@iew0ata) androidGlabel$)"string title_activity_main) F C activityF C applicationF C mani3estF
Android SQLite Database C"%D Tutorial (IV) : Membuat Fungsi %pdate Data Membuat Fitur &dit!%pdate Data pada SQLite Android
Sip, kita langsung saja. 6itur 5pdate48dit data ini dijalankan dengan pertama-tama melakukan long click item pada list /ie( data. "ang kemudian akan memunculkan dialog dan kita bisa memilih untuk 8dit data. +ertama-tama kita harus menambahkan dua buah method baru pada kelas controller yaitu kelas DBData!o&rce.java. "aitu method untuk select data, dan yang kedua adalah method untuk update data. ,ambahkan method get0arang9: berikut ini pada $0$ataSource.ja/a )
ambil satu barang sesuai id public Barang getBarang(long id) { Barang barang $ new Barang(); inisialisasi barang select -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 )_id $)*id2 null2 null2 null2 null); ambil data yang pertama cursor.move4oAirst(); masukkan data cursor ke ob?ek barang barang $ cursor4oBarang(cursor);
Method itu akan mengambil satu barang berdasarkan id barang yang kita de!inisikan. $an data yang sudah diambil itulah yang nantinya akan diedit. Kemudian ini adalah method untuk update data, tambahkan juga pada $0$ataSource.ja/a
update barang yang diedit public void updateBarang(Barang b) { ambil id barang String strAilter $ )_id$) * b.get#d(); memasukkan ke content values +ontent@alues args $ new +ontent@alues(); masukkan data sesuai dengan kolom pada database args.put(0B'elper.+(/7&%_%5&62 b.get%ama_barang()); args.put(0B'elper.+(/7&%_&6892 b.get&erk_barang()); args.put(0B'elper.+(/7&%_'58:52 b.get'arga_barang() ); update -uery database.update(0B'elper.45B/6_%5&62 args2 strAilter2 null); }
public class 0B0ataSource { inisialiasi S./ite 0atabase private S./ite0atabase database; inisialisasi kelas 0B'elper private 0B'elper db'elper; ambil semua nama kolom private StringNO all+olumns $ { 0B'elper.+(/7&%_#02
0B'elper.+(/7&%_%5&62 0B'elper.+(/7&%_&68920B'elper.+(/7&%_'58:5}; 0B'elper diinstantiasi pada constructor public 0B0ataSource(+onte,t conte,t) { db'elper $ new 0B'elper(conte,t); } membuka membuat sambungan baru ke database public void open() throws S./6,ception { database $ db'elper.getJritable0atabase(); } menutup sambungan ke database public void close() { db'elper.close(); } method untuk create insert barang ke database public Barang createBarang(String nama2 String merk2 String harga) { membuat sebuah +ontent@alues2 yang ber3ungsi untuk memasangkan data dengan nama1nama kolom pada database +ontent@alues values $ new +ontent@alues(); values.put(0B'elper.+(/7&%_%5&62 nama); values.put(0B'elper.+(/7&%_&6892 merk); values.put(0B'elper.+(/7&%_'58:52 harga); mengeksekusi perintah S./ insert data yang akan mengembalikan sebuah insert #0 long insert#d $ database.insert(0B'elper.45B/6_%5&62 null2 values); setelah data dimasukkan2 memanggil perintah S./ Select menggunakan +ursor untuk melihat apakah data tadi benarI sudah masuk dengan menyesuaikan #0 $ insert#0 +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 0B'elper.+(/7&%_#0 * ) $ ) * insert#d2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); mengubah ob?ek pada kursor pertama tadi ke dalam ob?ek barang Barang newBarang $ cursor4oBarang(cursor); close cursor cursor.close(); mengembalikan barang baru return newBarang;
private Barang cursor4oBarang(+ursor cursor) { buat ob?ek barang baru Barang barang $ new Barang(); debug /(:+54 /og.v()in3o)2 )4he get/(%: )*cursor.get/ong(>)); /og.v()in3o)2 )4he set/at/ng )*cursor.getString(;)*)2)*cursor.getString(I)); Set atribut pada ob?ek barang dengan data kursor yang diambil dari database barang.set#d(cursor.get/ong(>)); barang.set%ama_barang(cursor.getString(;)); barang.set&erk_barang(cursor.getString(I)); barang.set'arga_barang(cursor.getString(P)); kembalikan sebagai ob?ek barang return barang; } mengambil semua data barang public 5rray/istCBarangF get5llBarang() { 5rray/istCBarangF da3tarBarang $ new 5rray/istCBarangF(); select all S./ -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 null2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); ?ika masih ada data2 masukkan data barang ke da3tar barang while (Kcursor.is53ter/ast()) { Barang barang $ cursor4oBarang(cursor); da3tarBarang.add(barang); cursor.move4o%e,t(); } &ake sure to close the cursor cursor.close(); return da3tarBarang; } ambil satu barang sesuai id public Barang getBarang(long id) { Barang barang $ new Barang(); inisialisasi barang select -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 )_id $)*id2 null2 null2 null2 null); ambil data yang pertama cursor.move4oAirst(); masukkan data cursor ke ob?ek barang barang $ cursor4oBarang(cursor); tutup sambungan cursor.close(); return barang return barang;
} update barang yang diedit public void updateBarang(Barang b) { ambil id barang String strAilter $ )_id$) * b.get#d(); memasukkan ke content values +ontent@alues args $ new +ontent@alues(); masukkan data sesuai dengan kolom pada database args.put(0B'elper.+(/7&%_%5&62 b.get%ama_barang()); args.put(0B'elper.+(/7&%_&6892 b.get&erk_barang()); args.put(0B'elper.+(/7&%_'58:52 b.get'arga_barang() ); update -uery database.update(0B'elper.45B/6_%5&62 args2 strAilter2 null); } }
Setelah itu, kita buat layout !ile baru bernama edit;data.7ml. 6ile ini adalah layout untuk 8dit Vie(. ,ambahkan kode berikut pada edit;data.7ml.
CD,ml version$);.>) encoding$)ut31E)DF C8elative/ayout ,mlnsGandroid$)httpG schemas.android.com apk res android) ,mlnsGads$)httpG schemas.android.com apk lib com.google.ads) androidGlayout_width$)match_parent) androidGlayout_height$)match_parent) androidGorientation$)vertical) F C4e,t@iew androidGid$)"*id te,t_id_barang) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGte,t$)"string title_edit) androidGte,t5ppearance$)DandroidGattr te,t5ppearance/arge) androidGlayout_align<arent4op$)true) androidGlayout_center'oriHontal$)true) androidGlayout_margin4op$);=dp) androidGbackground$)Q>>>>33) F C6dit4e,t androidGid$)"*id edit4e,t_nama) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGems$);>) androidGlayout_margin4op$);=dp) androidGbackground$)Qa3333333) androidGlayout_below$)"id te,t_id_barang) F Cre-uestAocus F C 6dit4e,tF C6dit4e,t androidGid$)"*id edit4e,t_merk) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGems$);>) androidGlayout_margin4op$);=dp) androidGbackground$)Qa3333333) androidGlayout_below$)"id edit4e,t_nama) F C6dit4e,t androidGid$)"*id edit4e,t_harga) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGinput4ype$)number) androidGems$);>) androidGlayout_margin4op$);=dp) androidGbackground$)Qa3333333) androidGlayout_below$)"id edit4e,t_merk) F
C/inear/ayout androidGlayout_width$)match_parent) androidGlayout_height$)wrap_content) androidGorientation$)horiHontal) androidGgravity$)center) androidGlayout_below$)"id edit4e,t_harga) F CButton androidGid$)"*id button_save_update) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGte,t$)"string tombol_edit) F CButton androidGid$)"*id button_cancel_update) androidGlayout_width$)wrap_content) androidGlayout_height$)wrap_content) androidGte,t$)"string tombol_cancel) F C /inear/ayoutF C 8elative/ayoutF
public class @iew0ata e,tends /ist5ctivity implements (n#tem/ong+lick/istener { inisialisasi kontroller private 0B0ataSource dataSource; inisialisasi arraylist private 5rray/istCBarangF values; private Button editButton; private Button delButton; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.viewdata); dataSource $ new 0B0ataSource(this); buka kontroller dataSource.open(); ambil semua data barang values $ dataSource.get5llBarang(); masukkan data barang ke array adapter 5rray5dapterCBarangF adapter $ new 5rray5dapterCBarangF(this2 android.8.layout.simple_list_item_;2 values); set adapter pada list set/ist5dapter(adapter); mengambil listview untuk diset on#tem/ong+lick/istener /ist@iew lv $ (/ist@iew) 3ind@iewBy#d(android.8.id.list); lv.set(n#tem/ong+lick/istener(this);
apabila ada long click "(verride public boolean on#tem/ong+lick(3inal 5dapter@iewCDF adapter2 @iew v2 int pos2 3inal long id) { tampilkan alert dialog 3inal 0ialog dialog $ new 0ialog(this); dialog.set+ontent@iew(8.layout.dialog_view); dialog.set4itle()<ilih 5ksi)); dialog.show(); 3inal Barang b $ (Barang) get/ist5dapter().get#tem(pos); editButton $ (Button) dialog.3ind@iewBy#d(8.id.button_edit_data); delButton $ (Button) dialog.3ind@iewBy#d(8.id.button_delete_data); apabila tombol edit diklik editButton.set(n+lick/istener( new (n+lick/istener() { "(verride public void on+lick(@iew v) { 4(0( 5uto1generated method stub } } ); } return true; method untuk edit data public void switch4o6dit(long id) { Barang b $ dataSource.getBarang(id); #ntent i $ new #ntent(this2 6dit0ata.class); Bundle bun $ new Bundle(); bun.put/ong()id)2 b.get#d()); bun.putString()nama)2 b.get%ama_barang()); bun.putString()merk)2 b.get&erk_barang()); bun.putString()harga)2 b.get'arga_barang()); i.put6,tras(bun); 3inale(); start5ctivity(i); } method yang dipanggil ketika edit data selesai public void 3inale() { @iew0ata.this.3inish(); dataSource.close(); } "(verride protected void on8esume() { dataSource.open(); super.on8esume(); } switch4o6dit(b.get#d()); dialog.dismiss();
%ke, dari kode di atas kita bisa lihat bah(a sebagian besar perubahan ada pada !ungsi untuk mengeset %n lickListener pada item di list/ie(. -adi cara kerjanya, apabila list item diklik dan kemudian ditahan klik itu 9long click:, nanti akan muncul alert dialog yang memberikan pilihan kepada kita. Apakah ingin delete data, atau edit data. Apabila kita mengklik tombol edit data, maka kita akan diba(a ke acti/ity untuk edit data.
pu"lic class Edit#ata e!tends Activity implements OnClickListener$ private #B#ata%ource data%ource; private private private private long id; %tring harga; %tring merk; %tring nama;
private Button "tn%ave; private Button "tnCancel; private Barang "arang; )Override pu"lic void onCreate*Bundle savedInstance%tate+ $ super.onCreate*savedInstance%tate+; setContentView*,.layout.edit-data+; ..inisialisasi varia"el ed&ama / *Edit e!t+ 0indViewById*,.id.edit e!t-nama+; ed'arga / *Edit e!t+ 0indViewById*,.id.edit e!t-harga+; ed(erk / *Edit e!t+ 0indViewById*,.id.edit e!t-merk+; t!Id / * e!tView+ 0indViewById*,.id.te!t-id-"arang+; .."uat sam"ungan "aru ke data"ase data%ource / new #B#ata%ource*this+; data%ource.open*+; .. am"il data "arang dari e!tras Bundle "un / this.getIntent*+.getE!tras*+; id / "un.getLong*1id1+; harga / "un.get%tring*1harga1+; merk / "un.get%tring*1merk1+; nama / "un.get%tring*1nama1+; ..masukkan data2data "arang terse"ut ke 0ield editor t!Id.append*%tring.valueO0*id++; ed&ama.set e!t*nama+; ed'arga.set e!t*harga+; ed(erk.set e!t*merk+; ..set listener pada tom"ol "tn%ave / *Button+ 0indViewById*,.id."utton-save-update+; "tn%ave.setOnClickListener*this+; "tnCancel / *Button+ 0indViewById*,.id."utton-cancel-update+; "tnCancel.setOnClickListener*this+; 3 )Override pu"lic void onClick*View v+ $ .. O#O Auto2generated method stu" switch*v.getId*++ $ .. apa"ila tom"ol save diklik *update "arang+ case ,.id."utton-save-update 4 "arang / new Barang*+; "arang.set'arga-"arang*ed'arga.get e!t*+.to%tring*++; "arang.set&ama-"arang*ed&ama.get e!t*+.to%tring*++; "arang.set(erk-"arang*ed(erk.get e!t*+.to%tring*++; "arang.setId*id+; data%ource.updateBarang*"arang+; Intent i / new Intent*this5 View#ata.class+;
3 3 3
startActivity*i+; Edit#ata.this.0inish*+; data%ource.close*+; "reak; .. apa"ila tom"ol cancel diklik5 0inish activity case ,.id."utton-cancel-update 4 0inish*+; data%ource.close*+; "reak;
Acti/ity 8dit$ata.ja/a pada dasarnya ber!ungsi untuk mengambil data barang yang mau diedit, seperti nama, merk, dan harga. 5ntuk kemudian data tersebut ditempatkan pada !ield 8dit,e7t supaya bisa kita ganti. Setelah selesai, maka kita mengklik tombol Sa/e dan kemudian acti/ity akan memanggil method update0arang9: pada kontroller, yang akan melakukan update data le(at S'L 'uery.
android4la"el/1)string.title-activity-main1 ; 6.activity; 6activity android4name/1.(enu1 android4la"el/1)string.title-activity-main1 ; 6intent20ilter; 6action android4name/1android.intent.action.(AI&1 .; 6category android4name/1android.intent.category.LA@&C'E,1 .; 6.intent20ilter; 6.activity; 6activity android4name/1.View#ata1 android4la"el/1)string.title-activity-main1 ; 6.activity; 6activity android4name/1.Edit#ata1 android4la"el/1)string.title-activity-main1 ; 6.activity; 6.application; 6.mani0est;
Android SQLite Database C"%D Tutorial (V) : Membuat Fungsi Delete Data Membuat Fitur Delete data pada SQLIte Android
Langsung saja, seperti biasanya, kita akan menambahkan satu method baru pada kontroller DBData!o&rce.java. Satu method yang ber!ungsi untuk mendelete data tertentu pada database S'Lite. 0uka !ile $0$ataSource.ja/a, dan tambahkan kode berikut.
package id.twooh.appinventory; import import import import import import ?ava.util.5rray/ist; android.content.+ontent@alues; android.content.+onte,t; android.database.+ursor; android.database.S./6,ception; android.database.s-lite.S./ite0atabase;
inisialisasi kelas 0B'elper private 0B'elper db'elper; ambil semua nama kolom private StringNO all+olumns $ { 0B'elper.+(/7&%_#02 0B'elper.+(/7&%_%5&62 0B'elper.+(/7&%_&68920B'elper.+(/7&%_'58:5}; 0B'elper diinstantiasi pada constructor public 0B0ataSource(+onte,t conte,t) { db'elper $ new 0B'elper(conte,t); } membuka membuat sambungan baru ke database public void open() throws S./6,ception { database $ db'elper.getJritable0atabase(); } menutup sambungan ke database public void close() { db'elper.close(); } method untuk create insert barang ke database public Barang createBarang(String nama2 String merk2 String harga) { membuat sebuah +ontent@alues2 yang ber3ungsi untuk memasangkan data dengan nama1nama kolom pada database +ontent@alues values $ new +ontent@alues(); values.put(0B'elper.+(/7&%_%5&62 nama); values.put(0B'elper.+(/7&%_&6892 merk); values.put(0B'elper.+(/7&%_'58:52 harga); mengeksekusi perintah S./ insert data yang akan mengembalikan sebuah insert #0 long insert#d $ database.insert(0B'elper.45B/6_%5&62 null2 values); setelah data dimasukkan2 memanggil perintah S./ Select menggunakan +ursor untuk melihat apakah data tadi benarI sudah masuk dengan menyesuaikan #0 $ insert#0 +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 0B'elper.+(/7&%_#0 * ) $ ) * insert#d2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); mengubah ob?ek pada kursor pertama tadi ke dalam ob?ek barang Barang newBarang $ cursor4oBarang(cursor); close cursor
cursor.close(); mengembalikan barang baru return newBarang; } private Barang cursor4oBarang(+ursor cursor) { buat ob?ek barang baru Barang barang $ new Barang(); debug /(:+54 /og.v()in3o)2 )4he get/(%: )*cursor.get/ong(>)); /og.v()in3o)2 )4he set/at/ng )*cursor.getString(;)*)2)*cursor.getString(I)); Set atribut pada ob?ek barang dengan data kursor yang diambil dari database barang.set#d(cursor.get/ong(>)); barang.set%ama_barang(cursor.getString(;)); barang.set&erk_barang(cursor.getString(I)); barang.set'arga_barang(cursor.getString(P)); kembalikan sebagai ob?ek barang return barang; } mengambil semua data barang public 5rray/istCBarangF get5llBarang() { 5rray/istCBarangF da3tarBarang $ new 5rray/istCBarangF(); select all S./ -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 null2 null2 null2 null2 null); pindah ke data paling pertama cursor.move4oAirst(); ?ika masih ada data2 masukkan data barang ke da3tar barang while (Kcursor.is53ter/ast()) { Barang barang $ cursor4oBarang(cursor); da3tarBarang.add(barang); cursor.move4o%e,t(); } &ake sure to close the cursor cursor.close(); return da3tarBarang; } ambil satu barang sesuai id public Barang getBarang(long id) { Barang barang $ new Barang(); inisialisasi barang select -uery +ursor cursor $ database.-uery(0B'elper.45B/6_%5&62 all+olumns2 )_id $)*id2 null2 null2 null2 null); ambil data yang pertama cursor.move4oAirst();
masukkan data cursor ke ob?ek barang barang $ cursor4oBarang(cursor); tutup sambungan cursor.close(); return barang return barang; } update barang yang diedit public void updateBarang(Barang b) { ambil id barang String strAilter $ )_id$) * b.get#d(); memasukkan ke content values +ontent@alues args $ new +ontent@alues(); masukkan data sesuai dengan kolom pada database args.put(0B'elper.+(/7&%_%5&62 b.get%ama_barang()); args.put(0B'elper.+(/7&%_&6892 b.get&erk_barang()); args.put(0B'elper.+(/7&%_'58:52 b.get'arga_barang() ); update -uery database.update(0B'elper.45B/6_%5&62 args2 strAilter2 null); } delete barang sesuai #0 public void deleteBarang(long id) { String strAilter $ )_id$) * id; database.delete(0B'elper.45B/6_%5&62 strAilter2 null); }
Kode yang baru ada pada bagian yang di highlight, dan pada dasarnya kode itu hanya ber!ungsi untuk melakukan sebuah S'L <uery untuk delete data di database.
import com.google.ads.5d@iew; import import import import import import import import import import import android.app.0ialog; android.app./ist5ctivity; android.content.#ntent; android.os.Bundle; android.view.@iew; android.view.@iew.(n+lick/istener; android.widget.5dapter@iew; android.widget.5dapter@iew.(n#tem/ong+lick/istener; android.widget.5rray5dapter; android.widget.Button; android.widget./ist@iew;
public class @iew0ata e,tends /ist5ctivity implements (n#tem/ong+lick/istener { inisialisasi kontroller private 0B0ataSource dataSource; inisialisasi arraylist private 5rray/istCBarangF values; private Button editButton; private Button delButton; "(verride public void on+reate(Bundle saved#nstanceState) { super.on+reate(saved#nstanceState); set+ontent@iew(8.layout.viewdata); 5d@iew ad@iew $ (5d@iew)this.3ind@iewBy#d(8.id.ad@iew_view); ad@iew.load5d(new 5d8e-uest()); dataSource $ new 0B0ataSource(this); buka kontroller dataSource.open(); ambil semua data barang values $ dataSource.get5llBarang(); masukkan data barang ke array adapter 5rray5dapterCBarangF adapter $ new 5rray5dapterCBarangF(this2 android.8.layout.simple_list_item_;2 values); set adapter pada list set/ist5dapter(adapter); mengambil listview untuk diset on#tem/ong+lick/istener /ist@iew lv $ (/ist@iew) 3ind@iewBy#d(android.8.id.list); lv.set(n#tem/ong+lick/istener(this); } apabila ada long click "(verride public boolean on#tem/ong+lick(3inal 5dapter@iewCDF adapter2 @iew v2 int pos2 3inal long id) {
tampilkan alert dialog 3inal 0ialog dialog $ new 0ialog(this); dialog.set+ontent@iew(8.layout.dialog_view); dialog.set4itle()<ilih 5ksi)); dialog.show(); 3inal Barang b $ (Barang) get/ist5dapter().get#tem(pos); editButton $ (Button) dialog.3ind@iewBy#d(8.id.button_edit_data); delButton $ (Button) dialog.3ind@iewBy#d(8.id.button_delete_data); apabila tombol edit diklik editButton.set(n+lick/istener( new (n+lick/istener() { "(verride public void on+lick(@iew v) { 4(0( 5uto1generated method switch4o6dit(b.get#d()); dialog.dismiss(); } ); }
stub
apabila tombol delete di klik delButton.set(n+lick/istener( new (n+lick/istener() { "(verride public void on+lick(@iew v) { 0elete barang dataSource.deleteBarang(b.get#d()); dialog.dismiss(); 3inish(); start5ctivity(get#ntent());
} ); return true; }
public void switch4o6dit(long id) { Barang b $ dataSource.getBarang(id); #ntent i $ new #ntent(this2 6dit0ata.class); Bundle bun $ new Bundle(); bun.put/ong()id)2 b.get#d()); bun.putString()nama)2 b.get%ama_barang()); bun.putString()merk)2 b.get&erk_barang()); bun.putString()harga)2 b.get'arga_barang()); i.put6,tras(bun); 3inale(); start5ctivity(i); }
public void 3inale() { @iew0ata.this.3inish(); dataSource.close(); } "(verride protected void on8esume() { dataSource.open(); super.on8esume(); } "(verride protected void on<ause() { dataSource.close(); super.on<ause(); } }
Kode yang baru ada pada bagian yang di-highlight. Sekarang apabila kalian jalankan aplikasinya dan mengklik tombol delete, maka method delete0arang9: pada controller akan dipanggil, dan data yang dimaksud akan dihapus dari database.