Tutorial ini akan menggunakan contoh aplikasi manajemen keuangan pribadi. Aplikasi ini merupakan aplikasi sederhana yang terdiri dari beberapa bagian penting yaitu:
Dashboard: berisi statistik dan informasi singkat tentang kondisi keuangan
List Transaksi: catatan transaksi pemasukan dan pengeluaran yang telah dilakukan
Form Transaksi: digunakan untuk menambahkan data catatan transaksi
Detail Transaksi: digunakan untuk menampilkan data detail dari tiap transaksi dan tombol untuk menghapus transaksi tersebut
Inisialisasi Aplikasi
Langkah pertama yang dilakukan dalam pengembangan aplikasi adalah membuat proyek dengan Android Studio. Berikut adalah langkah pembuatan proyek untuk aplikasi kita:
Pilih menu New Apllication
Selanjutnya isikan Application Name dengan Pengurus Uang dan Domain Name dengan app.manajemenuang.net. Jangan lupa untuk memilih alamat direktori sesuai dengan yang kita inginkan.
Selanjutnya kita akan diminta untuk memilih template dari Activity yang akan digunakan, di sini sebaiknya kita gunakan Basic Activity untuk memudahkan pembuatan aplikasi nanti.
Terakhir biarkan nama activity utamanya MainActivity begitu juga nama file layoutnya activity_main.xml, Kemudian klik finish.
Pada tahap ini kita sudah memiliki kerangka aplikasi yang sudah siap di-compile dan dijalankan. Untuk menguji coba aplikasi dasar tersebut, kita bisa mengklik tombol Run. Selanjutnya Android Studio akan memerlukan beberapa saat untuk melakukan kompilasi, membuka AVD (jika belum dijalankan sebelumnya) dan mengirim hasil aplikasi yang kita buat ke Device atau Virtual Device yang dipilih.
Ketika proses kompilasi selesai, kita akan mendapatkan hasil sebagaimana ditunjukkan pada gambar di bawah ini. Biarkan AVD tetap berjalan (untuk menghemat waktu starting AVD) dan kita lanjutkan ke langkah pengembangan proyek selanjutnya.
Membuat Activity & Layout
Setelah project dibuat dan bisa berjalan dengan baik, saatnya kita menambahkan komponen lain ke dalam project kita. Rencananya aplikasi yang akan kita buat memiliki beberapa tampilan dengan workflow sebagaimana ditampilkan pada gambar di bawah ini.
Berdasarkan gambar tersebut, berarti kita memerlukan paling tidak 4 buah antarmuka tampilan yang dalam pemrograman Android disebut sebagai Activity. Saat ini kita sudah mendapatkan 1 tampilan sebagai halaman utama dan halaman yang pertama kali dibuka ketika aplikasi dijalankan, berarti kita memerlukan tambahan 3 Activity lagi.
TransactionListActivity
Klik kanan pada direktori java project, kemudian pilih menu New > Activity > Empty Activity
Pada inputan Activity Class inputkan TransactionListActivity, dan pastikan pada Layout file bernilai activity_transaction_list.xml
Kemudian setelah Android Studio selesai men-generate file activity java dan layout, isikan kode layout berikut pada pada file activity_transaction_list.xml
Klik kanan pada direktori java project, kemudian pilih menu New > Activity > Empty Activity
Pada inputan Activity Class inputkan TransactionFormActivity, dan pastikan pada Layout file bernilai activity_transaction_form.xml
Kemudian setelah Android Studio selesai men-generate file activity java dan layout, isikan kode layout berikut pada pada file activity_transaction_form.xml
Khusus untuk form, karena kita menggunakan Spinner (dropdown selection) kita harus menambahkan kode berikut pada TransactionFormActivity agar dapat berjalan dengan baik:
Klik kanan pada direktori java project, kemudian pilih menu New > Activity > Empty Activity
Pada inputan Activity Class inputkan TransactionDetailActivity, dan pastikan pada Layout file bernilai activity_transaction_detail.xml
Kemudian setelah Android Studio selesai men-generate file activity java dan layout, isikan kode layout berikut pada pada file activity_transaction_detail.xml
android:text="Deskripsi agak panjang dari transaksi yang dilakukan"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="delTransaction"
android:text="Hapus Transaksi"/>
</LinearLayout>
MainActivity
Khusus untuk MainActivity kita tidak perlu membuatnya, karena dari awal sudah dibuatkan oleh Android Studio saat kita membuat proyek. Yang perlu dilakukan adalah menambahkan koding pada content_main.xml menjadi seperti di bawah ini:
Intent intent = new Intent(getBaseContext(), TransactionListActivity.class);
startActivity(intent);
}
});
}
// ...
}
Membuat Model
Langkah selanjutnya setelah kita membuat tampilan untuk aplikasi adalah membuat class model yang merupakan representasi dari tabel basis data SQLite yang akan kita gunakan. Pada proyek ini kita akan menyimpan data transaksi berupa nama transaksi, jenis transaksi (pemasukan/pengeluaran), jumlah, dan juga keterangan.
Class model yang dimaksud adalah standard class Java yang diberikan attribute dan method untuk keperluan manipulasi data. Langkah pembuatannya adalah sebagai berikut:
Klik kanan pada direktori Java kemudian pilih menu New > Class
Isikan Transaction pada inputan Class Name, biarkan inputan lain, dan klik Finish
Selanjutnya pada Transaksi.java isikan koding berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
publicclassTransactionimplementsSerializable{
publicstaticfinalint PENGELUARAN = 1;
publicstaticfinalint PEMASUKAN = 1;
private String id;
private String name;
privateint type;
privateint amount;
private String description;
publicTransaction(String id, String name, int type, int amount, String description){
Menampilkan Transaksi dengan ListView dan DetailView
Setelah membuat class Transaksi saatnya kita membuat ListView untuk menampilkan data dummy (bukan data beneran). Untuk melakukannya kita harus menambahkan fungsi atribut ArrayList<Transaksi> listTrans dan method void dummyData() pada class TransactionListActivity seperti ditunjukkan pada koding berikut:
Transaction.PENGELUARAN, 2000000, "Beli oleh-oleh buat keluarga"));
}
}
Setelah menambahkan attribute dan method tersebut, kita perlu memanggil method dummyData pada method ocCreate() sebagaimana ditunjukkan pada koding di bawah ini:
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, transList);
transactionList.setAdapter(adapter);
}
// ...
}
Menampilkan Detail Satu Data Pada Detail View
Setelah data ditampilkan pada ListView, sekarang kita akan menampilkan data lengkap sebuah transaksi dengan menggunakan DetailView. Untuk melakukannya yang pertama kali dilakukan adalan menambahkan aksi ketika ada salah satu item list yang disentuh (atau diklik) dengan menambahkan onItemClickListener pada listview:
Terakhir kita juga harus mengubah TransactionDetailActivity untuk dapat menerima data dan menampilkan sesuai dengan layout yang telah dibuat sebelumnya:
Kita telah berhasil menampilkan data uji coba pada listView, selanjutnya kita tampilan tersebut kita ganti dengan koneksi ke database lokal.
Pada Android koneksi database lokal menggunakan SQLite yang merupakan database lokal tanpa server (atau istilahnya adalah embedded database). Karena modelnya berbeda dengan basis data berbasis server (serperti MySQL), model koneksi dan manipulasi SQLite juga berbeda. Kongkritnya dalam pemrograman Android, untuk dapat melakukan akses SQLite kita perlu menyiapkan 2 hal, yaitu class Database Contract dan class Database Helper.
Class Database Contract
Contract class adalah Java Class standar yang digunakan untuk mendefinisikan konstanta dan beberapa query yang berhubungan dengan pembentukan dan pengaksesan basis tabel. Untuk membuat table contract untuk aplikasi yang kita kerjakan, kita bisa memodifikasi class model Transaction yang sudah kita buat sebelumnya menjadi seperti di bawah ini:
"name text, type integer, amount integer, description text)";
publicstaticfinal String SQL_DELETE = "drop table if exists transactions";
}
Class untuk Database Helper
Class kedua yang harus kita siapkan untuk akses database adalah class Helper, class ini berfungsi untuk mengeksekusi perintah-perintah SQL baik yang berhubungan dengan struktur tabel maupun yang berhubungan dengan data tabel. Class Helper yang kita gunakan untuk aplikasi kita adalah berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
publicclassDatabaseHelperextendsSQLiteOpenHelper{
publicstaticfinal String DB_NAME = "keuangan.db";
publicstaticfinalint DB_VERSION = 1;
private SQLiteDatabase db;
publicDatabaseHelper(Context context){
super(context, DB_NAME, null, DB_VERSION);
}
@Override
publicvoidonCreate(SQLiteDatabase db){
db.execSQL(Transaction.SQL_CREATE);
}
@Override
publicvoidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL(Transaction.SQL_DELETE);
onCreate(db);
}
publicvoidinsertTransaction(String name, int type, int amount, String description){
Setelah menyelesaikan kedua class untuk membantu koneksi basis data, selanjutnya kita akan menggunakan class tersebut pada aplikasi kita. Pertama kita akan menggunakannya untuk menginputkan data melalui Form, kemudian menampilkan data melalui MainActivity dan ListView, dan terakhir menggunakannya untuk menghapus data pada tampilan detail.
Input Data Melalui Form
Pada bagian pembentukan activity kita sudah membuat desain untuk form-nya, sehingga yang perlu dilakukan saat ini adalah menghubungkan tampilan form tersebut ke dalam logic Java-nya. Berikut adalah modifikasi class FormTransactionActivity untuk menyimpan data ke dalam basis data lokal.
Toast.makeText(this, "Transaksi "+name+" berhasil disimpan", Toast.LENGTH_SHORT).show();
finish();
}
}
Membaca Data dan Menampilkan Pada Main
Setelah menginputkan data di form, langkah selanjutnya adalah menampilkan 5 data terbaru di Dashboard dan menampilkan semua data di ListView. Karena kita telah membuat layout pada bagian sebelumnya, dan bahkan menampilkan list dengan menggunakan ArrayList, pada bagian ini kita hanya perlu mengganti bagian ArrayList untuk mengambil data dari basis data.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
publicclassMainActivityextendsAppCompatActivity{
DatabaseHelper dbHelper = new DatabaseHelper(this);
Untuk menampilkan semua data pada ListView, kita perlu membuat method baru untuk mengambil data dari database dan memanggilnya pada saat Activity dibuat. Koding lengkapnya ditunjukkan di bawah ini:
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, transList);
transactionList.setAdapter(adapter);
}
}
Menghapus Data Pada Detail
Proses penghapusan data pada detail memerlukan _id, untuk memudahkan kita akan menambahkan atribut trans_id untuk menyimpan data tersebut dan fungsi hapus yang dipanggil ketika tombol hapus ditekan diisi dengan kode berikut: