Ini merupakan tutorial lanjutan dari seri tutorial android
sebelumnya (lihat postingan sebelum ini). Jadi kita akan tetap bekerja pada
project yang sudah kita buat sebelumnya. Fitur Edit dan Hapus data ini
dijalankan dengan pertama-tama melakukan long click item pada list lihat data.
Yang kemudian akan memunculkan dialog dan kita bisa memilih untuk Edit atau Hapus
data.
Okeh langsung saja ke step-stepnya:
1. Buat Activity baru dengan
nama “EditData” (tanpa tanda petik) dan layout “editdata”.
*Silahkan sesuaikan sendiri jika ingin memberi nama sendiri.
2. Selanjutnya kita akan
mengatur tampilan layoutnya. Buka folder res/layout pada project kalian dan
buka file “editdata.xml”. Isikan kode berikut:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<LinearLayout android:id="@+id/LinearLayout01"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/bgnaruto"
tools:context=".EditData" >
<TextView
android:id="@+id/text_id_mahasiswa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title_edit"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
/>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/text_id_mahasiswa"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/tvnama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="29dp"
android:text="@string/txtnama" />
<EditText
android:id="@+id/editText_nama"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="text"
>
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/LinearLayout01"
android:layout_marginTop="15dp">
<TextView
android:id="@+id/tvalamat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="25dp"
android:text="@string/txtalamat" />
<EditText
android:id="@+id/editText_alamat"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="text"
>
</EditText>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:layout_below="@id/LinearLayout02"
android:layout_marginTop="15dp"
>
<Button
android:id="@+id/button_save_update"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/tombol_dialog_edit"
/>
<Button
android:id="@+id/button_cancel_update"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="@string/tombol_cancel"
/>
</LinearLayout>
</RelativeLayout>
3. Buka “strings.xml” dan
tambahkan script berikut:
<string name="tombol_cancel">Batal</string>
<string name="tombol_dialog_edit">Edit</string>
<string name="tombol_dialog_delete">Hapus</string>
4. Selanjutnya buka DBDataSource.java.
Kita perlu menambahkan fungsi untuk mengedit data mahasiswa dari database. Berikut
ini kodenya (Tambahkan pada bagian sebelum kurung tutup terakhir) :
//ambil satu mhs sesuai id
public Mahasiswa getMahasiswa(long id)
{
Mahasiswa mahasiswa = new Mahasiswa(); //inisialisasi mhs
//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 mhs
mahasiswa = cursorToMahasiswa(cursor);
//tutup sambungan
cursor.close();
//return mhs
return mahasiswa;
}
//update mhs yang diedit
public void updateMahasiswa(Mahasiswa k)
{
//ambil id barang
String strFilter = "_id=" + k.getId();
//memasukkan ke content values
ContentValues args = new ContentValues();
//masukkan data sesuai dengan kolom pada database
args.put(DBHelper.COLUMN_NAMA, k.getNama());
args.put(DBHelper.COLUMN_ALAMAT, k.getAlamat() );
//update query
database.update(DBHelper.TABLE_NAME, args, strFilter, null);
}
// delete mhs sesuai ID
public void hapusDataMahasiswa(long id)
{
String strFilter = "_id=" + id;
database.delete(DBHelper.TABLE_NAME, strFilter, null);
}
5. Berikutnya buatlah file xml
dengan nama “dialogview.xml”. Sesuaikan scriptnya menjadi seperti
berikut:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center"
>
<Button
android:id="@+id/button_edit_data"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="@string/tombol_dialog_edit"
/>
<Button
android:id="@+id/button_delete_data"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="@string/tombol_dialog_delete"
/>
</LinearLayout>
6. Kemudian buatlah kelas “LihatData”
(tanpa tanda petik) dan ganti scriptnya menjadi seperti berikut:
package com.aina.dblatihan;
import java.util.ArrayList;
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.Button;
import android.widget.ListView;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
public class LihatData extends Activity implements OnItemLongClickListener{
private DBDataSource dataSource;
ListView lvCustomList;
private Button editButton;
private Button delButton;
//inisialisasi arraylist
private ArrayList<Mahasiswa> values;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lihatdata);
lvCustomList = (ListView) findViewById(R.id.lv);
lvCustomList.setOnItemLongClickListener(this);
dataSource = new DBDataSource(this);
// buka kontroller
dataSource.open();
// ambil semua data mhs
values = dataSource.getAllMahasiswa();
DataListAdapter contactListAdapter = new DataListAdapter(
LihatData.this, (ArrayList<Mahasiswa>) values);
lvCustomList.setAdapter(contactListAdapter);
dataSource.close();
}
//apabila ada long click
@Override
public boolean onItemLongClick(final AdapterView<?> adapter, View v, int pos,
final long id) {
//tampilkan alert dialog
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialogview);
dialog.setTitle("Pilih Aksi");
dialog.show();
final Mahasiswa m = (Mahasiswa) lvCustomList.getAdapter().getItem(pos);
editButton = (Button) dialog.findViewById(R.id.button_edit_data);
delButton = (Button) dialog.findViewById(R.id.button_delete_data);
//apabila tombol edit diklik
editButton.setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switchToEdit(m.getId());
dialog.dismiss();
}
}
);
//apabila tombol delete di klik
delButton.setOnClickListener(
new OnClickListener()
{
@Override
public void onClick(View v) {
// Delete barang
dataSource.hapusDataMahasiswa(m.getId());
dialog.dismiss();
finish();
startActivity(getIntent());
}
}
);
return true;
}
//method untuk edit data
public void switchToEdit(long id)
{
Mahasiswa b = dataSource.getMahasiswa(id);
Intent i = new Intent(this, EditData.class);
Bundle bd = new Bundle();
bd.putLong("id", b.getId());
bd.putString("nama", b.getNama());
bd.putString("alamat", b.getAlamat());
i.putExtras(bd);
finale();
startActivity(i);
}
//method yang dipanggil ketika edit data selesai
public void finale()
{
LihatData.this.finish();
dataSource.close();
}
@Override
protected void onResume() {
dataSource.open();
super.onResume();
}
@Override
protected void onPause() {
dataSource.close();
super.onPause();
}}
7. Selanjutnya buka kelas EditData
dan atur scriptnya menjadi seperti berikut:
package com.aina.dblatihan;
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;
import android.app.Activity;
import android.content.Intent;
public class EditData extends Activity implements OnClickListener{
private DBDataSource dataSource;
private long id;
private String nama;
private String alamat;
private EditText etNama;
private EditText etAlamat;
private TextView txId;
private Button btnSave;
private Button btnCancel;
private Mahasiswa mhs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.editdata);
//inisialisasi variabel
etNama = (EditText) findViewById(R.id.editText_nama);
etAlamat = (EditText) findViewById(R.id.editText_alamat);
txId = (TextView) findViewById(R.id.text_id_mahasiswa);
//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");
nama = bun.getString("nama");
alamat = bun.getString("alamat");
//masukkan data-data barang tersebut ke field editor
txId.append(String.valueOf(id));
etNama.setText(nama);
etAlamat.setText(alamat);
//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 mhs)
case R.id.button_save_update :
mhs = new Mahasiswa();
mhs.setAlamat(etAlamat.getText().toString());
mhs.setNama(etNama.getText().toString());
mhs.setId(id);
dataSource.updateMahasiswa(mhs);
Intent i = new Intent(this, LihatData.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;
}
}
}
8. Jalankan Aplikasi dan pilih
menu Lihat Data. Kemudian tekan dan tahan pada salah satu data mahasiswa maka
akan keluar dialog view yang berisi pilihan aksi untuk Edit atau Hapus.
Apabila dipilih aksi Edit maka akan menuju ke Activity Edit Data. Berikut ini tampilannya:
(Misalnya kita akan mengedit alamat dari mahasiswa dengan nama Nabila)
Apabila dipilih aksi Hapus maka data mahasiswa yang terpilih akan terhapus (hilang dari daftar mahasiswa). Berikut ini adalah tampilan ketika data mahasiswa dengan nama nabila dihapus. Hanya tersisa satu mahasiswa saja pada daftar mahasiswa.
Fin.
Happy Coding.
Alhamdulillah.
Jum'at, 24 Januari 2014
22:00
Bagus banget mbak ini
ReplyDeleteKalo boleh saya minta source code nya mbak buat refrensi tugas akhir
Ke email adysupri737@gmail.com
This comment has been removed by a blog administrator.
ReplyDelete