Versi baru kursus ini sekarang tersedia, diperbarui untuk mencerminkan praktik terbaik untuk versi terbaru dari kerangka kerja Android dan Android Studio. Kursus baru (hanya dalam bahasa Inggris) tersedia di kursus Android Developer Fundamentals (Versi 2), atau langsung ke Codelab praktis baru. Show
Kursus ini sekarang sudah usang dan konten ini akan segera dihapus dari situs ini. Harap perbarui tautan Anda. Daftar Isi: Dalam praktik ini Anda akan mempelajari cara memuat data yang disediakan oleh penyedia konten aplikasi lain latar belakang dan menampilkannya kepada pengguna, saat sudah siap. Meminta ContentProvider untuk menyediakan data yang ingin Anda tampilkan bisa memakan waktu. Jika Anda meminta data dari penyedia konten dari sebuah Aktivitas (dan menjalankannya di thread UI], aplikasi bisa diblokir cukup lama sehingga penundaan cukup terlihat untuk pengguna dan sistem bahkan bisa mengeluarkan pesan "Application Not Responding". Dengan demikian, Anda harus memuat data di thread yang terpisah, latar belakang, dan menampilkan hasilnya setelah pemuatan selesai. Untuk menjalankan kueri di thread yang terpisah, Anda harus menggunakan loader yang berjalan secara asinkron latar belakang dan menghubungkan ulang ke Aktivitas setelah selesai. Khususnya, CursorLoader menjalankan kueri di latar belakang, dan otomatis menjalankan ulang kueri saat data yang terkait dengan kueri berubah. Anda telah menggunakan AsyncTaskLoader di praktik sebelumnya. CursorLoader memperluas AsyncTaskLoader untuk bekerja dengan penyedia konten. Di tingkat tinggi, Anda memerlukan bagian ini untuk menggunakan loader untuk menampilkan data dari penyedia konten: Diagram berikut menampilkan arsitektur aplikasi lengkap dengan sebuah loader.
Yang harus sudah Anda KETAHUIUntuk praktik ini Anda harus bisa:
Yang akan Anda PELAJARIAnda akan belajar:
Yang akan Anda LAKUKAN
Ringkasan AplikasiMenggunakan WordListClient dari praktik sebelumnya sebagai sumber untuk beberapa kode, Anda akan membuat aplikasi baru, WordListLoader yang memuat dan menampilkan data dari penyedia konten untuk WordListSQLWithContentProvider. Tangkapan layar berikut menampilkan bagaimana aplikasi yang telah selesai akan menampilkan kata. PENTING:
Tugas 1. Membuat aplikasi dasar untuk WordListLoaderDalam tugas ini, Anda akan memuat proyek dan bagian aplikasi yang tidak spesifik untuk loader. Anda harus memuat aplikasi WordListClient di Android Studio, sehingga Anda bisa menyalin kode darinya. 1.1 Buat proyek dengan kelas Contract dan WordListItem dan file layout.
1.2 Tambahkan sebuah RecyclerView ke MainActivityUntuk menampilkan data, tambahkan RecyclerView ke MainActivity. Anda bisa melakukan ini sendiri atau menggunakan kembali kode dari WordListClient.
1.3 Buat WordListAdapterGunakan WordListAdapter dari WordListClient dan cuplikan berikut sebagai referensi untuk membuat adaptor ini. Jika memerlukan informasi pengingat, baca lagi bab RecyclerView di kursus ini.
Tugas 2. MainActivity: Menambahkan LoaderManager dan LoaderCallbacksKetika Anda menggunakan sebuah loader untuk memuat data, gunakan pengelola loader untuk menangani detail berjalannya loader. LoaderManager adalah kelas bantu yang mengelola semua loader Anda. Anda hanya perlu satu pengelola loader per aktivitas. Misalnya, pengelola loader menangani pendaftaran sebuah observer dengan penyedia konten, yang menerima callback ketika data di penyedia konten berubah. 2.1 Tambahkan Pengelola Loader
2.2. Implementasikan onCreateLoader()LoaderManager memanggil metode onCreateLoader() untuk membuat loader, jika belum ada. Anda membuat loader dengan memberikannya konteks dan URI asal data dimuat—dalam hal ini, untuk penyedia konten WordListSQLWithContentProvider, URI yang ditetapkan di Contract.
2.3 Implementasikan onLoadFinished()Setelah pemuatan selesai, Anda perlu mengirimkan data ke adaptor.
2.4 Implementasikan onLoaderReset()Saat menyetel ulang loader, beri tahu adaptor bahwa data sudah tidak tersedia dengan meneruskan null ke setData(). 4Tugas 3: WordListAdapter: Mengimplementasikan setData(), getItemCount(), dan onBindViewHolder()Sebagai tugas akhir, Anda perlu mengimplementasikan metode setData() yang direferensikan di atas, dan mengimplementasikan onBindViewHolder() untuk bekerja dengan loader untuk menampilkan data. Berikut ini prosesnya:
3.1 Implementasikan setData()Anda memerlukan cara untuk menyetel dan menyimpan versi data yang terakhir dimuat dengan adaptor. Untuk aplikasi ini, loader mengembalikan data sebagai kursor, sehingga Anda perlu membuat variabel anggota Cursor mCursor yang akan selalu menampung rangkaian data terakhir. Metode setData() dipanggil oleh loader ketika selesai dimuat atau disetel ulang, dan perlu memperbarui mCursor.
3.2. Implementasikan getItemCount()Sebagai ganti 0, getItemCount() perlu mengembalikan jumlah item di mCursor. Jika mCursor null, kembalikan -1. 63.3. Implementasikan onBindViewHolder()Di WordListClient, metode onBindViewHolder() menggunakan resolver konten untuk mengambil data dari penyedia konten WordListSQLWithContentProvider. Di aplikasi ini, onBindViewHolder() menggunakan data yang disediakan loader dan menyimpannya di mCursor. Di onBindViewHolder, tangani situasi berikut.
3.4 Jalankan dan uji aplikasi AndaAplikasi WordListLoader Anda harus bekerja sama persis dengan aplikasi WordListClient untuk menampilkan daftar kata. Untuk menguji aplikasi Anda, lakukan yang berikut. |