Project ini merupakan lanjutan dari project sebelumnya yaitu
tentang Database Android.
Dan kali disini akan kita tambahkan 2 fungsi lagi, yaitu
untuk meng-Edit dan men-Delete data.
Langsung saja, kita buka project yang sudah kita buat
sebelumnya yaitu DATABASEKU.
Buka kembali class DBDataSource Tambahkan dan sesuaikan kodenya menjadi
seperti berikut (yang diblok kuning):
package databaseku.example.databaseku;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.util.ArrayList;
public class DBDataSource {
// inisialiasi SQLite Database
private SQLiteDatabase database;
// inisialisasi kelas DBHelper
private DBHelper dbHelper;
// ambil semua nama kolom
private String[] allColumns = { DBHelper.COLUMN_ID, DBHelper.COLUMN_NAME,
DBHelper.COLUMN_MERK, DBHelper.COLUMN_HARGA };
// DBHelper diinstantiasi pada constructor
public DBDataSource(Context context) {
dbHelper = new DBHelper(context);
}
// membuka/membuat sambungan baru ke
database
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
// menutup sambungan ke database
public void close() {
dbHelper.close();
}
// method untuk create/insert barang ke
database
public Barang createBarang(String nama,
String merk, String harga) {
// membuat sebuah ContentValues, yang berfungsi
// untuk memasangkan data dengan nama-nama
// kolom
pada database
ContentValues
values = new ContentValues();
values.put(DBHelper.COLUMN_NAME, nama);
values.put(DBHelper.COLUMN_MERK, merk);
values.put(DBHelper.COLUMN_HARGA, harga);
// mengeksekusi perintah SQL insert data
// yang akan mengembalikan sebuah
insert ID
long insertId = database.insert(DBHelper.TABLE_NAME, null, values);
// setelah data dimasukkan, memanggil
// perintah SQL Select menggunakan Cursor untuk
// melihat apakah data tadi benar2 sudah
masuk
// dengan menyesuaikan ID = insertID
Cursor
cursor = database.query(DBHelper.TABLE_NAME, allColumns,
DBHelper.COLUMN_ID + " = " + insertId, null, null, null, null);
// pindah ke data paling pertama
cursor.moveToFirst();
// mengubah objek pada kursor pertama
tadi
// ke dalam objek barang
Barang
newBarang = cursorToBarang(cursor);
// close cursor
cursor.close();
// mengembalikan barang baru
return newBarang;
}
private Barang
cursorToBarang(Cursor cursor) {
// buat objek barang baru
Barang
barang = new Barang();
// debug LOGCAT
Log.v("info", "The getLONG " +
cursor.getLong(0));
Log.v("info",
"The setLatLng " +
cursor.getString(1) + ","
+
cursor.getString(2));
/*
* Set atribut pada objek barang
dengan data kursor yang diambil dari
* database
*/
barang.setId(cursor.getLong(0));
barang.setNama_barang(cursor.getString(1));
barang.setMerk_barang(cursor.getString(2));
barang.setHarga_barang(cursor.getString(3));
// kembalikan sebagai objek barang
return barang;
}
// mengambil semua data barang
public ArrayList<Barang>
getAllBarang() {
ArrayList<Barang>
daftarBarang = new ArrayList<Barang>();
// select all SQL query
Cursor
cursor = database.query(DBHelper.TABLE_NAME, allColumns, null,
null, null, null, null);
// pindah ke data paling pertama
cursor.moveToFirst();
// jika masih ada data, masukkan
data barang ke
// daftar barang
while (!cursor.isAfterLast()) {
Barang
barang = cursorToBarang(cursor);
daftarBarang.add(barang);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
return daftarBarang;
}
public Barang getBarang(long id) {
Barang barang = new Barang(); // inisialisasi barang
// select query
Cursor cursor = database.query(DBHelper.TABLE_NAME, allColumns, "_id ="
+ id, null, null, null, null);
// ambil data yang pertama
cursor.moveToFirst();
// masukkan data cursor ke objek barang
barang = cursorToBarang(cursor);
// tutup sambungan
cursor.close();
// return barang
return barang;
}
// update barang yang diedit
public void updateBarang(Barang b) {
// ambil id barang
String strFilter = "_id=" + b.getId();
// memasukkan ke content values
ContentValues args = new ContentValues();
// masukkan data sesuai dengan kolom
pada database
args.put(DBHelper.COLUMN_NAME, b.getNama_barang());
args.put(DBHelper.COLUMN_MERK, b.getMerk_barang());
args.put(DBHelper.COLUMN_HARGA, b.getHarga_barang());
// update query
database.update(DBHelper.TABLE_NAME, args, strFilter, null);
}
// delete barang sesuai ID
public void deleteBarang(long id) {
String strFilter = "_id=" + id;
database.delete(DBHelper.TABLE_NAME, strFilter, null);
}
Setelah itu, kita buat dan tambahkan layout xml, beri nama saja editdata, dengan cara klik kanan pada folder res > layout, pilih new android xml file.
Setelah itu kita ketikan kede berikut :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_id_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:background="#0000ff"
android:text="title_edit"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText_nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/text_id_barang"
android:layout_marginTop="15dp"
android:background="#afffffff"
android:ems="10" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText_merk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText_nama"
android:layout_marginTop="15dp"
android:background="#afffffff"
android:ems="10" />
<EditText
android:id="@+id/editText_harga"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText_merk"
android:layout_marginTop="15dp"
android:background="#afffffff"
android:ems="10"
android:inputType="number" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/editText_harga"
android:gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/button_save_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="tombol_edit" />
<Button
android:id="@+id/button_cancel_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="tombol_cancel" />
</LinearLayout>
Save saja.. selanjutnya kita tambahkan class EditData.
Tamabahkan kode berikut :
package databaseku.example.databaseku;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class EditData extends Activity implements OnClickListener {
private DBDataSource dataSource;
private long id;
private String harga;
private String merk;
private String nama;
private EditText edNama;
private EditText edHarga;
private EditText edMerk;
private TextView txId;
private Button btnSave;
private Button btnCancel;
private Barang barang;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.editdata);
//inisialisasi
variabel
edNama = (EditText) findViewById(R.id.editText_nama);
edHarga = (EditText) findViewById(R.id.editText_harga);
edMerk = (EditText) findViewById(R.id.editText_merk);
txId = (TextView) findViewById(R.id.text_id_barang);
//buat
sambungan baru ke database
dataSource = new DBDataSource(this);
dataSource.open();
// ambil
data barang dari extras
Bundle bun = this.getIntent().getExtras();
id = bun.getLong("id");
harga = bun.getString("harga");
merk = bun.getString("merk");
nama = bun.getString("nama");
//masukkan
data-data barang tersebut ke field editor
txId.append(String.valueOf(id));
edNama.setText(nama);
edHarga.setText(harga);
edMerk.setText(merk);
//set
listener pada tombol
btnSave = (Button) findViewById(R.id.button_save_update);
btnSave.setOnClickListener(this);
btnCancel = (Button) findViewById(R.id.button_cancel_update);
btnCancel.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
// apabila tombol save diklik (update barang)
case R.id.button_save_update :
barang = new Barang();
barang.setHarga_barang(edHarga.getText().toString());
barang.setNama_barang(edNama.getText().toString());
barang.setMerk_barang(edMerk.getText().toString());
barang.setId(id);
dataSource.updateBarang(barang);
Intent i = new Intent(this, ViewData.class);
startActivity(i);
EditData.this.finish();
dataSource.close();
break;
// apabila tombol cancel diklik, finish
activity
case R.id.button_cancel_update :
finish();
dataSource.close();
break;
}
}
}
Jangan lupa di save, selanjutnya kita tambahkan metodh di
class ViewData.
Buka kembali class ViewData, tambahkan dan sesuaikan kode
seperti berikut (yang diblok kuning) :
package databaseku.example.databaseku;
import java.util.ArrayList;
import android.app.Dialog;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class ViewData extends ListActivity implements OnItemLongClickListener {
// inisialisasi kontroller
private DBDataSource dataSource;
// inisialisasi arraylist
private ArrayList<Barang> values;
// menampilkan data
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewdata);
dataSource = new DBDataSource(this);
// buka kontroller
dataSource.open();
// ambil semua data barang
values = dataSource.getAllBarang();
// masukkan data barang ke array adapter
ArrayAdapter<Barang>
adapter = new ArrayAdapter<Barang>(this,
android.R.layout.simple_list_item_1, values);
// set adapter pada list
setListAdapter(adapter);
// mengambil listview
untuk diset onItemLongClickListener
ListView lv = (ListView)
findViewById(android.R.id.list);
lv.setOnItemLongClickListener(this);
}
@Override
public boolean onItemLongClick(final AdapterView<?> adapter, View v,
int pos, final long id) {
// TODO Auto-generated method stub
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialogview);
dialog.setTitle("Pilih Aksi");
dialog.show();
final Barang b = (Barang)
getListAdapter().getItem(pos);
Button editButton = (Button)
dialog.findViewById(R.id.button_edit_data);
Button delbutton = (Button) dialog
.findViewById(R.id.button_delete_data);
editButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method
stub
switchToEdit(b.getId());
dialog.dismiss();
}
});
delbutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method
stub
dataSource.deleteBarang(b.getId());
finish();
startActivity(getIntent());
}
});
return true;
}
public void switchToEdit(long id) {
Barang b = dataSource.getBarang(id);
Intent i = new Intent(this, EditData.class);
Bundle bun = new Bundle();
bun.putLong("id", b.getId());
bun.putString("nama", b.getNama_barang());
bun.putString("merk", b.getMerk_barang());
bun.putString("harga", b.getHarga_barang());
i.putExtras(bun);
finale();
startActivity(i);
}
public void finale() {
ViewData.this.finish();
dataSource.close();
}
@Override
protected void onResume() {
dataSource.open();
super.onResume();
}
@Override
protected void onPause() {
dataSource.close();
}
}
Tambahkan dan sesuaikan kode seperti berikut (yang diblok
kuning) :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="databaseku.example.databaseku"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="databaseku.example.databaseku.CreateData"
android:label="@string/app_name" >
</activity>
<activity
android:name="databaseku.example.databaseku.Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name="databaseku.example.databaseku.ViewData"
android:label="@string/app_name" >
</activity>
<activity
android:name="databaseku.example.databaseku.EditData"
android:label="@string/app_name"
>
</activity>
</application>
</manifest>
Buka saja data yang sudah di imputkan, pilih salah satu data kmudian longklik/klik dan tahan aga lama.. lalu akan muncul dialog untuk meng-edit atao mendelet data tersebut, seperti gambar berikut :
Ketika memilih edit maka hasilnya seperti ini :
Ubah data nya, kemudian klik tombol tombol_edit maka datanya
akan berubah.
Dan apabila memilih tombol delete hasilnya
seperti ini :Datanya akan terhapus.
Tag :
Tutorial Android
0 Komentar untuk " DATABASE ANDROID II "