ListView Bertingkat,
Ubah kode program pada “MainActivity.java” pada project tadi seperti dibawah.
- Run dan lihat hasilnya
ListView Bertingkat,
Ubah kode program pada “MainActivity.java” pada project tadi seperti dibawah.
- Run dan lihat hasilnya
ListView dengan Image
- Buat project baru, beri nama “ListImage”
- Buat kode program pada “activity_main.xml”
- Buat layout XML baru dengan nama layout_isi_lv.xml
- Buat file layout XML baru File -> new -> other -> Android XML Layout File -> beri nama file “layout_isi_lv.xml”. Lalu buat kode program pada “layout_isi_lv.xml”
- Buat kode program pada “MainActivity.java”
- Run dan lihat hasilnya
ListView
- Buat project baru dan beri nama “ListView”
- Buat kode program pada “activity_main.xml”
- Selanjutnya buat kode program pada “MainActivity.java”
-
1. Aplikasi Hitung Luas Persegi
- Buat project dengan nama “persegi” dengan activity “MainActivity”.
-
- Kode “activity_main.xml”
- Ketikkan baris kode pada “MainActivity.java” dalam direktori src seperti dibawah.
- Selanjutnya di Run… Hasilnya kira-kira seperti ini.
Java telah menyediakan fasilitas agar objek dapat disimpan ke dalam stream secara otomatis dengan mudah. Class yang digunakan adalah ObjectOutputStream dan ObjectInputStream.
Setelah membuat project baru (pastikan AndroidManifest.xml-nya telah ditambahkan ijin menulis ke external!) Sekarang coba kita buat class Mahasiswa sebagai berikut.
Tambah class baru (File-->>new-->>class). Perhatikan penggunaan interface java.io.Serializable yang menandakan bahwa class ini dalam disimpan ke dalam stream
Codenya sebagai berikut. Perhatikan variabel serialVersionUID untuk menyatakan versi class. Jangan lupa class Mahasiswa ini mengimplementas interface Serializable.
Selanjutnya, buat program untuk menulis dua objek mahasiswa ke dalam class. Penulisan objek ke stream sangat mudah, hanya dengan class ObjectOutputStream dan method writeObject. Buatlah code ini di activity Main.
Sekarang kita lanjutkan ke pembacaan objek yang telah dituliskan. Untuk membaca file berisi objek digunakan class FileInputStream dan ObjectInputStream;
File dapat disimpan baik di dalam device maupun di media penyimpanan (SD card). Secara default, aplikasi tidak dapat mengakses file milik aplikasi lain. Bagi anda yang telah mengenal stream dan file di Java, anda dapat membaca secara cepat bagian ini, karena tidak ada perbedaan antara Java dan Android. Class yang mensupport operasi file disediakan di package java.io.*
Pemrosesan file dalam jumlah besar, yang membutuhkan kinerja yang tinggi masih dibutuhkan berbagai bidang. Misalnya aplikasi backend yang mengelola dokumen di perusahaan, aplikasi pengolahan teks, aplikasi pemroses XML, HTML, aplikasi simulasi-simulasi dan sebagainya. Penguasaan stream dan file akan membantu anda untuk memecahkan berbagai masalah
Stream adalah aliran data. Bayangkan stream sebagai sungai yang mengalirkan air. Seperti sungai, stream mengalirkan byte-byte data. Pemrosesan input dan output di Java pada prinsipnya menggunakan konsep stream ini.
Gambar 1: Input Stream (diambil dari http://download.oracle.com/javase/tutorial)
Gambar : Output Stream (diambil dari http://download.oracle.com/javase/tutorial)
Untuk membantu programmer, tersedia banyak class-class untuk memproses stream, bahkan lebih dari 60 kelas! (lihat gambar 3 dan gambar 4). Tentu saja tidak semua kelas tersebut harus digunakan, programmer bisa memilih kelas mana yang dibutuhkan untuk menyelesaikan masalahnya.
Sebelum memulai, pastikan emulator sudah memiliki SD-Card (Start-->> All Program -->> Android SDK Tools)
Lalu untuk setiap project yang akan mengakses ke SD Card, tambahkan ijin untuk menulis ke media penyimpanan external di AndroidManifest.xml
Sebelum mulai, pastikan virtual device telah diset SD-Card dan AndroidManifest telah ditambahkan ijin untuk menulis (baca bagian persiapan)
File teks penting untuk menulis data, XML, HTML dan sebagainya. File teks dianggap sebagai stream dari karakter. Untuk menulis ke file teks, cara yang paling mudah adalah dengan menggunakan class PrintWriter. Berikut adalah contoh program yang menulis dua baris ke file teks.
Sedangkan untuk membaca, dapat digunakan class Scanner yang dapat membaca baris demi baris. Berikut contoh codenya, letakkan di bawah code atas.
SQLite menyediakan fasilitas relational DBMS dengan perintah SQL. Referensi lengkap SQL yang digunakan dapat dilihat di http://www.sqlite.org/lang.html
Setiap aplikasi memiliki instance database tersendiri, dan berbeda dengan shared preference, tidak disediakan fasilitas agar aplikasi dapat membaca database aplikasi lain.
Untuk menggunakan SQLite, sangat dianjurkan menggunakan class helper untuk membuka dan menutup database, menginisiasi tabel dst. Helper juga digunakan saat melakukan upgrade struktur database jika suatu saat aplikasi diupdate. Class helper ini diturunkan dari class SQLiteOpenHelper.
Untuk latihan kita akan membuat aplikasi sederhana yang menyimpan data relasi berupa nama dan nomor telpon. Pertama kita buat class helper terlebih dulu. Buatlah project Android, tambahkan ke dalam project tersebut satu class (file -->> New -->> class). Beri class ini RelasiOpenHelper.
Buatlah code berikut
Selanjutnya kita akan membuat class yang melakukan manipulasi terhadap data (insert, ambil data), beri nama DbRelasi.
Source code DbRelasi adalah sebagai berikut:
Setelah kita membuat class helper dan class dbRelasi, sekarang kita akan memanfaatkan dua kelas tersebut. Kembali ke activity utama yaitu class Main. Tambahkan code sebagai berikut:
Android menyediakan beberapa cara untuk menyimpan data: file, relasional database dengan SQLlite dan pasangan key/value yang disebut sistem preferences. Untuk sharing antar aplikasi disediakan mekanisme yang disebut ContentProvider.
Shared Preferences (SP) adalah mekanisme untuk menyimpan pasangan key-value untuk tipe data primitif (integer, double, string, booelan). SP cocok untuk penggunaan ringan seperti menyimpan setting aplikasi dan kondisi user interface (misalnya saat activity masuk ke state sleep karena device menerima telepon).
Data dalam shared preferences disimpan dalam device android dalam bentuk XML.
Shared Preference objek untuk activity diperoleh melalui getPreferences().
Ada tiga mode untuk shared preferences (SP)
MODE_PRIVATE: hanya aplikasi yang membuat SP yang dapat mengakses data
MODE_WORLD_READABLE: aplikasi yang lain boleh membaca
MODE_WORLD_WRITEABLE: aplikasi yang lain boleh membaca sekaligus menulis.
Code berikut memperlihatkan cara penggunaan SP. Jangan lupa memanggil commit!
Jalankan. Kemudian coba komentari bagian isi data, dan jalankan kembali aplikasi.
Dapat dilihat data nama dan umur tersimpan walaupun aplikasi sudah ditutup,
Dalam materi sebelumnya, selalu digunakan satu activity (satu form). Tentu saja sebuah applikasi sering membutuhkan multi acitivity. Sebagai contoh, misalnya kita akan membuat sebuah aplikasi matematika sederhana. Applikasi ini menyediakan menu yang berisi pilihan untuk menghitung luas segiempat dan luas segitiga.
Rancangan layarnya sebagai berikut.
Pertama kita akan membuat form utama terlebih dulu yang memiliki dua menu. Berikut deklarasi XML form main.
Dengan hasil sebagai berikut:
Selanjutnya kita akan membuat form kedua untuk menghitung luas segitiga. Klik layout di package Explorer lalu klik kanan-->> New atau File -->> New -->> Other (Ctrln-N). Pilih Android XML File.
Beri nama file segitiga
dengan root TableLayout
Buat form untuk menerima input dari user dan menampilkan keluaran
Deklarasi XML-nya adalah sebagai berikut (perhatikan penggunaan atribut android:numeric=integer|decimal agar teks hanya menerima nilai integer atau desimal):
Selanjutnya, kita akan membuat program untuk menghitung luas segitiga. Klik package, lalu klik kanan -->> New -->> Class
Beri nama Segitiga, dan merupakan turunan dari android.app.Activity
Set layout yang digunakan (R.layout.segitiga) dan implementasi saat button diklik.
Selanjutnya adalah menghubungkan menu utama dengan modul menghitung segitiga ini.
Intent dapat digunakan untuk memanggil activiy lain. Intent adalah request dari satu activity ke activity atau intent listener lain. Agar dapat dipanggil, kita harus menambahkan intent ke AndroidManifest.xml.
Intent dapat digunakan untuk memanggil activiy lain. Intent adalah request dari satu activity ke activity atau intent listener lain. Intent juga digunakan untuk notifikasi event misalnya SD card dimasukkan, SMS masuk, activiy dijalankan dst
Penting: agar activity hitung luas segitiga dapat dipanggil, kita harus menambahkan activity ini ke AndroidManifest.xml.
Sekarang kembali ke Main.Java, tambahkan pada method segitigaClick intent berisi permintaan untuk menjalankan activity segitiga dan jalankan dengan startActivity.
Pada contoh diatas digunakan startActivity untuk memanggil sub activity. Tidak ada notifikasi apakah subactivity sudah selesai atau belum dan terkadang kita juga membutuhkan data dari subactivity. Untuk hal tersebut, dapat digunakan startActivityForResult.
Perlu penjelasan yang agak panjang untuk mencoba startActivityForResult. Buatlah sebuah project baru. Pada form Main, tambah satu button yang jika diklik akan memanggil sub activity dan mengirimkan data.
Kemudian kita buat form sub activity-nya. Klik kanan di layout -->> New -->> Other -->> Android XML File, beri nama sub.xml
Form-nya seperti berikut, TextView akan menampilkan kiriman data dari form utama,
Potongan XML-nya adalah sebagai berikut:
Sekarang kita membuat Sub.java. Klik kanan dibagian package (misal edu.upi.cs) -->> New -->> Class. Beri nama Sub, dan isi superclass dengan android.app.Activity.
Jangan lupa ganti parameter setContentView dengan .sub.
onStart adalah method yang dipanggil setelah onCreate dan activity telah ditampilkan. Isi method ini dengan menampilkan isi data yang dikirimkan program utama.
Sekarang kita kembali ke main.java, gunakan method putExtra untuk menambahkan data ke intent. Pada startActivityForResult terdapat parameter angka 99 (silahkan ganti dengan angka atau konstanta apapun). Ini karena satu activity bisa mengirimkan banyak intent dan diperlukan cara untuk membedakan antara satu intent dengan intent yang lain.
Method onActivityResult akan dipanggil saat activity yang dipanggil telah selesai.
Jangan lupa mendaftarkan sub activity di AndroidManifest.xml
Test program, maka subactivty akan menampilkan data yang dikirim dari form utama.
Catatan: Jika terjadi force close, ada kemungkinan activity belum ditambahkan di AndroidManifest.xml
Pada program diatas, anda telah berhasil mengirimkan data ke sub activity. Sekarang kita akan membuat sebaliknya, data dari sub activy akan dikirim ke form utama. Kita akan memodifikasi program diatas sbb:
Pada main.xml, tambahkan TextView untuk menampilkan hasil dari sub activity, beri id tvHasilSub.
Lalu pada main.java, lengkapi method onActivityResult. Pada method ini, diterima dan diproses hasil dari sub activity.
Kemudian untuk subactivitynya sendiri, tambahkan Button yang diklik saat pengguna telah selesai dengan subactivity. Edit sub.xml sebagai berikut
Implementasikan method saat Button selesai diklik di sub.java
Jalankan program, setelah subactiviy ditutup, maka di program utama akan muncul kiriman data dari sub activity