Pertemuan 14 - PPB

Nama               : Amanda Illona Farrel
NRP                : 5025221056
Mata Kuliah    : Pemrograman Perangkat Bergerak (C)

News App

Dalam artikel kali ini, saya ingin berbagi hasil eksplorasi saya dalam membuat aplikasi berita Android menggunakan MVVM Architecture, Retrofit, Room Database, dan Jetpack Compose. Aplikasi ini bernama News App, sebuah aplikasi untuk menampilkan berita terkini dari REST API.

Langkah awal dimulai dengan membuat proyek baru menggunakan template Empty Activity di Android Studio. Saya mengintegrasikan News API (newsapi.org) sebagai sumber data berita, lalu membangun tampilan Home Screen yang menampilkan headline utama dan daftar breaking news sesuai dengan arahan yang diberikan. Dimana fitur yang ada, yakni Home News, Detail News, Search News, Pull to Resfresh, Loading State, dan Error State. Berikut hasilnya:






Kemudian, saya melakukan eksplorasi dengan memodifikasi dan mengembangkan kode tersebut secara bertahap. Saya menerapkan MVVM Architecture dengan memisahkan layer: UI (Jetpack Compose), ViewModel (state management dengan StateFlow), Repository (data abstraction), Retrofit (HTTP client), dan Room Database (persistent storage untuk bookmark).

Adapun fitur-fitur yang saya implementasikan adalah sebagai berikut:

  1. Home News dengan featured article card besar dan daftar breaking news
  2. Detail News dengan tampilan lengkap: gambar, judul, kategori, waktu, dan konten
  3. Search News untuk mencari berita berdasarkan kata kunci melalui API
  4. Saved News untuk menyimpan berita favorit secara persistent dengan Room Database
  5. Pull to Refresh untuk memuat ulang berita terbaru dengan gesture swipe down
  6. Share Artikel ke platform lain seperti WhatsApp, Telegram, dan media sosial
  7. Buka di Browser untuk membaca artikel lengkap di browser eksternal
  8. Bottom Navigation dengan tiga tab: Home, Search, dan Saved
  9. Loading State dengan CircularProgressIndicator saat data sedang dimuat
  10. Error State dengan pesan error dan tombol Retry jika gagal memuat berita
  11. Category Label otomatis berdasarkan sumber berita (Technology, Business, Science, dll)
  12. Time Ago format waktu relatif seperti "2 jam lalu" dan "3 hari lalu"

Implementasi ini melibatkan pembuatan beberapa file penting:

  • Data Model: Article (dengan Parcelable) dan NewsResponse sebagai wrapper API response
  • ApiService dengan endpoint getTopHeadlines dan searchNews menggunakan Retrofit
  • RetrofitClient sebagai Singleton pattern untuk konfigurasi HTTP client
  • Room Database: SavedArticleEntity, SavedArticleDao, dan AppDatabase untuk penyimpanan lokal
  • NewsRepository sebagai abstraction layer yang menggabungkan akses API dan Room Database
  • NewsViewModel (AndroidViewModel) untuk mengelola state Home, Search, dan Saved
  • Sealed class NewsUiState dan SearchUiState untuk state management yang type-safe
  • Empat screen UI: HomeScreen, DetailScreen, SearchScreen, dan SavedScreen
  • NewsCard components: FeaturedNewsCard untuk headline dan SmallNewsCard untuk daftar berita
  • NavGraph dengan Bottom Navigation dan routing antar screen
  • Utils berisi helper function formatTimeAgo dan getCategoryFromSource
  • BuildConfig untuk menyimpan API key dengan aman (tidak hardcoded)

Alur data pada aplikasi ini mengikuti pola MVVM: User berinteraksi dengan Compose UI, yang meneruskan event ke ViewModel. ViewModel kemudian memanggil Repository, yang mengambil data dari API Server melalui Retrofit atau dari Room Database untuk data lokal. Response dikembalikan dalam bentuk StateFlow yang otomatis memperbarui UI secara reactive.

Melalui project News App ini, saya mempelajari banyak hal penting dalam Android development: bagaimana mengintegrasikan REST API menggunakan Retrofit dan Coroutines, mengelola state yang kompleks dengan StateFlow dan Sealed Class, menerapkan Room Database untuk fitur bookmark yang persistent, menggunakan Navigation Compose untuk navigasi multi-screen dengan Bottom Navigation, memanfaatkan Android Intent System untuk fitur share dan open browser, serta menerapkan BuildConfig untuk keamanan API key. Berikut demo aplikasi News App:

Hasil pembelajaran saya tersebut dapat dilihat pada resource berikut. Demikian hasil eksplorasi saya. Terima kasih sudah menyimak :)

Link:

Komentar

Postingan populer dari blog ini

Pertemuan 3 - PPB

ETS - PPB

Pertemuan 1 - PPB