7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Android SDK

Android Fundamentals: Tanggal Database dan Penyortiran

Scroll to top
Read Time: 8 mins
This post is part of a series called Android Fundamentals.
Android Fundamentals: Status Bar Notifications
Android Fundamentals: IntentService Basics

Indonesian (Bahasa Indonesia) translation by Riska Aprianti (you can also view the original English article)

Android menggunakan teknologi SQLite untuk database lokalnya. Ini bekerja dengan sangat baik. Namun, kebiasaan quirks kadang-kadang ada jika dibandingkan dengan database relasional berfitur lengkap. Salah satu Quirk seperti itu SQLite tidak mendukung jenis jenisnya. Untungnya, ini mendukung fungsi tanggal dan mampu menyimpan tanggal dalam berbagai format. Tutorial ini akan memberi Anda metode untuk bekerja dengan tanggal dalam konteks menambahkan tanggal ke database aplikasi "TutList" dan (akhirnya) menampilkan daftar tutorial, diurutkan berdasarkan tanggal.

Tutorial ini dibangun berdasarkan tutorial sebelumnya, termasuk SQLite Crash Course untuk Pengembang Android dan seri lanjutan pada aktivitas TutList kami dengan tutorial terbaru, Android Fundamentals: Bekerja dengan Penyedia Konten. Jika Anda kesulitan mengikutinya, jangan ragu untuk mengirim pertanyaan di bagian komentar -- banyak orang membaca dan merespons, termasuk kami. Juga, jangan lupa tentang referensi Android SDK.
Kode sampel akhir yang menyertai tutorial ini tersedia untuk diunduh sebagai sumber terbuka dari hosting kode Google.

Langkah 0: Memulai

Tutorial ini mengasumsikan Anda akan mulai dari tutorial sebelumnya dalam seri ini, Kompatibilitas Android: Daftar Indikator pada Honeycomb, tinggalkan. Anda dapat mengunduh kode itu dan bekerja dari sana atau Anda dapat mengunduh kode untuk tutorial ini dan mengikuti. Apa pun itu, bersiaplah dengan mengunduh satu atau proyek lain dan mengimpornya ke Eclipse.

Langkah 1: Memperbarui Database

Untuk menyimpan dan mengambil tanggal melalui penyedia konten, kita perlu memperbarui database aplikasi untuk menyimpan tanggal yang terkait dengan setiap catatan konten. Perubahan pada basis data berarti bahwa Anda perlu memperbarui versi basis data, menambahkan nama kolom baru sebagai konstanta, menyediakan skema awal baru, dan kode peningkatan ke basis data yang ada. Semua perubahan ini mempengaruhi class TutListDatabase.

Mulailah dengan memperbarui versi database ke 3.

Selanjutnya, tambahkan kolom baru untuk tanggal tersebut, tentukan nama kolom itu di Java.

Perbarui skema untuk memasukkan kolom baru.

Kita telah memilih untuk menggunakan tipe INTEGER untuk menyimpan tanggal. Kita bisa memilih REAL, untuk menyimpan tanggal Julian, atau TEXT untuk menyimpan tanggal sebagai string. Kita menggunakan ekspresi SQLite, "strftime ('% s', 'now'))" yang menyisipkan waktu saat ini, dalam bentuk integer, ke dalam database. Nilainya dalam detik dan didefinisikan sebagai waktu Unix, detik sejak UTC dimulai pada tahun 1970.

Terakhir, tingkatkan skema yang lebih lama di dalam metode onUpgrade().

Perhatikan di sini bahwa skema yang diubah bervariasi dari skema asli. SQLite tidak mengizinkan ekspresi atau nilai tanggal saat ini digunakan sebagai nilai default saat mengubah tabel. Menggunakan nilai konstan (kita memilih pertengahan Februari tahun ini) adalah satu-satunya pilihan pendek membuat tabel baru dan menyalin data di seluruh -- operasi yang mahal ketika ada sejumlah besar data. Lihat dokumentasi SQLite pada ALTER TABLE untuk informasi lebih lanjut tentang batasan dengan operasi ADD COLUMN. Ingatlah batasan ini ketika merancang skema database aplikasi Anda dan merencanakan perubahan atau peningkatan di lain waktu.

Ini melengkapi perubahan database yang diperlukan untuk mendukung data tanggal artikel. Ini akan memungkinkan memperbarui aplikasi yang lebih lama tanpa kehilangan data apa pun yang sudah diunduh. Meskipun hal ini mungkin tidak berguna pada aplikasi ini, melakukan hal ini dengan benar dan membiasakan melakukannya akan menghemat masalah nantinya. Plus, pengguna Anda akan lebih senang.

Langkah 2: Memperbarui Penyedia Konten

Saat memperbarui aplikasi database, Anda ingin meninjau penyedia konten Anda untuk melihat perubahan apa yang harus dilakukan untuk membuat keduanya seimbang. Dalam hal ini, tidak ada perubahan yang diperlukan. Kita hanya menambahkan kolom baru untuk tanggal tersebut, yang tidak perlu dicerminkan dalam jenis URI atau modifikasi permintaan lainnya di penyedia konten.

Langkah mudah, ya? Ini tidak selalu mudah, karena Anda akan melihat lain kali kita menjalani latihan ini.

Langkah 3: Memperbarui Parser

Di dalam class TutListDownloaderService, kita menggunakan Pull Parser untuk mengambil data dari umpan XML dan memasukkannya ke dalam database. Kita perlu mendapatkan tanggal dari umpan, mentransformasikannya ke format yang sesuai untuk database, dan kemudian menambahkannya sebagai bagian dari setiap catatan database.

Dalam metode xmlParse(), tambahkan cek berikut dalam rantai pemeriksaan untuk event START_TAG:

Berikut ini contoh tampilan tanggal di XML:

Karena kita hanya tertarik pada tanggal, kita menguraikan ini menggunakan class SimpleDateFormat. Setelah metode parse() dipanggil, kita memiliki objek Tanggal standar. Karena objek Date menyimpan nilai sebagai milidetik alih-alih detik, kita kemudian membaginya dengan 1000 sebelum menyimpan hasilnya ke dalam database.

Langkah 4: Memodifikasi Layout ListView

Tanggal perlu ditampilkan di ListView bersama dengan judul setiap artikel. Saat ini, resource layout list_item.xml berisi satu TextView. Sekarang, ubah layout ini untuk menggunakan LinearLayout (berorientasi vertikal) untuk menempatkan judul di atas tanggal. Berikut daftar file list_item.xml yang diperbarui.

Jangan lupa untuk membuat perubahan ini ke list_item.xml alternatif yang ditemukan di direktori / layout-v11 juga.

Langkah 5: Memperbarui Fragmen ListView

Di dalam class TutListFragment, beberapa perubahan harus dilakukan untuk menambahkan dukungan penyortiran ke kontrol ListView. Proyeksi kursor harus diperbarui untuk memasukkan kolom tanggal. Nilai-nilai yang mengikat untuk adaptor harus diperbarui untuk menambahkan data tanggal juga, dan objek baru TextView yang akan menampilkan tanggal harus dikonfigurasi. Akhirnya, kelas ViewBinder khusus harus ditambahkan, jika tidak tanggal yang ditampilkan tidak akan terlihat benar.

Mulailah dengan memperbarui proyeksi kursor dan menambahkan klausa pengurutan, dalam metode onCreateLoader(), seperti ini:

Urutan tanggal yang menurun berarti item terbaru akan muncul di bagian atas.

Selanjutnya, ubah variabel binding (sekarang ditemukan di tingkat class) yang digunakan oleh class SimpleCursorAdapter, seperti ini:

Pada titik ini, kode harus berfungsi. Namun, hasilnya akan terlihat seperti ini:

Android SDK Database Dates Figure 2Android SDK Database Dates Figure 2Android SDK Database Dates Figure 2

Informasi tanggal baku, walaupun diurutkan dengan benar, tidak sangat berguna untuk kebanyakan pengguna. Solusinya adalah untuk mengubah nilai baku kembali ke tanggal ditampilkan menggunakan pengguna lokal. Untuk melakukan ini, kita dapat menerapkan sebuah objek ViewBinder.

Langkah 6: Menerapkan ViewBinder

Karena kita menggunakan objek SimpleCursorAdapter, kita akan menerapkan class SimpleCursorAdapter.ViewBinder custom. Kelas ViewBinder memungkinkan untuk pemetaan custom kolom ke objek View-nya sebagaimana diidentifikasi melalui array binder yang disediakan. Ini berarti kita dapat mengubah apa yang terjadi selama pengikatan kolom tanggal ke objek TextView tanpa mengganggu ikatan lainnya. Berikut adalah contoh implementasi custom ViewBinder yang melakukan ini:

Parameter yang masuk ke metode tunggal yang perlu kita terapkan, setViewValue, adalah objek View dari array UI_BINDING_TO yang kita sediakan, objek Kursor yang digunakan adaptor, dan indeks data yang ditemukan dalam kursor.

Kita menggunakan indeks dan objek Kursor untuk menentukan apakah nilai yang diikat adalah tanggal. Jika tidak, false dikembalikan untuk menunjukkan bahwa pengikatan default harus dilakukan. Jika demikian, kita melanjutkan dengan memformat ulang tanggal. Menggunakan class android.text.format.DateFormat memungkinkan kita untuk mengambil objek DateFormat khusus lokal. Karena nilai yang disimpan dalam database adalah dalam hitungan detik, kita harus mengonversinya menjadi milidetik. Kemudian kita dapat memanggil setText() pada tampilan untuk menulis string yang dihasilkan.

Akhirnya, class ViewBinder ini harus ditetapkan ke adaptor. Tepat setelah adaptor diinisialisasi, dalam metode onCreate(), panggil metode setViewBinder():

Sekarang ketika Anda menjalankan aplikasi, tanggal akan muncul dalam format khusus untuk pengguna lokal (atau format tanggal yang Anda atur di Pengaturan).

Android SDK Dates Figure 1Android SDK Dates Figure 1Android SDK Dates Figure 1

Kesimpulan

Dalam tutorial ini, Anda telah belajar cara bekerja dengan tanggal di Android saat membacanya dari feed XML, dan membaca dan menulisnya ke database SQLite. Selain itu, Anda belajar cara membuat perubahan khusus pada nilai individual yang ditampilkan dalam ListView. Dalam konteks TutList, Anda telah memodifikasi aplikasi untuk menyimpan tanggal sebagai diuraikan dari feed XML tutorial dan menggunakan tanggal tersebut untuk menunjukkan tutorial terbaru kepada pengguna dalam urutan publikasi.

Seperti biasa, kami menantikan tanggapan Anda!

Tentang Penulis

Pengembang seluler Lauren Darcey dan Shane Conder telah ikut menulis beberapa buku tentang pengembangan Android: buku pemrograman mendalam berjudul Pengembangan Aplikasi Nirkabel Android dan Pengembangan Aplikasi Android Sams Teach Yourself dalam 24 Jam. Ketika tidak menulis, mereka menghabiskan waktu mengembangkan perangkat lunak seluler di perusahaan mereka dan menyediakan layanan konsultasi. Mereka dapat dihubungi melalui email ke androidwirelessdev+mt@gmail.com, melalui blog mereka di androidbook.blogspot.com, dan di Twitter @androidwireless.

Perlu Bantuan Lagi Menulis Aplikasi Android? Lihat Buku dan Sumber Terbaru kami!

Buy Android Wireless Application Development, 2nd Edition Buy Sam's Teach Yourself Android Application Development in 24 Hours Mamlambo code at Code Canyon

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.