Android MVVM — Part 1 Pengenalan MVVM

Membangun Aplikasi MVVM Dengan Kotlin, Coroutines dan Architecture Component

Satria Adi Putra
UNIKOM Codelabs
4 min readMay 25, 2019

--

Apa Itu MVVM?

Pernah ga sih bikin aplikasi Android di mana semua logika dan proses I/O ditulis di satu class Activity yang sama? Ngakulah, pasti pernah! Bahkan Google Developers Experts di Indonesia pun, saya rasa pernah melakukan hal yang sama.

Salah nggak sih? Nggak juga. Karena pada akhirnya selama aplikasi yang dibangun memenuhi tujuan yang udah ditentuin dan bisa menyelesaikan masalah yang memang ingin diselesaikan, ga ada yang salah nulis semuanya di satu class Activity yang sama.

Masalahnya, Activity yang dibuat terlalu banyak tau. Dia punya banyak tanggung jawab, menyimpan banyak data dan juga bisa melakukan banyak hal. Ini merupakan kondisi yang disebut dengan God Object. Kondisi ini bisa ngeganggu maintainability dari proyek yang lagi kita kerjakan.

Photo by Adam Muise on Unsplash

Salah satu cara menghindari kondisi ini adalah dengan membagikan tanggung jawab kepada class yang lebih kecil. Untuk pembagian tanggung jawab ini kita dapat memanfaatkan Architectural Patterns.

MVVM (Model-View-ViewModel) adalah salah satu Architectural Patterns yang membagi tanggung jawab kepada tiga komponen, yaitu Model, View dan ViewModel. View bertanggung jawab untuk semua hal yang berhubungan dengan UI seperti menampilkan loading, dialog, toast dll. Model merupakan komponen yang bertanggung untuk menyediakan data yang dibutuhkan. Terakhir ViewModel merupakan komponen inti dari Architectural Patterns ini, tugasnya menyimpan dan mengambil data dari Model untuk nantinya ditampilkan oleh View.

Kenapa MVVM?

MVVM hanya satu dari sekian banyaknya Architectural Patterns yang ada. Banyak lagi yang lainnya seperti MVC (Model-View-Controller), MVI (Model-View-Intent), MVP (Model-View-Presenter) dan masih banyak lagi. MVP dan MVVM merupakan pola yang paling sering digunakan dalam pengembangan aplikasi Android. Lalu mengapa hanya membahas MVVM?

Pada Google I/O 2017 yang lalu, Google mengenalkan library baru Architecture Component. Library ini menyediakan beberapa komponen yang mendukung pengembangan aplikasi Android dengan pattern MVVM. Sejak itu juga, Google merekomendasikan pattern MVVM untuk pengembangan aplikasi Android.

Gimana Cara Kerjanya?

Photo from Guide to app architecture | Android Developers
  1. Activity bertanggung jawab sebagai View
  2. View akan melakukan observasi terhadap data yang disimpan di ViewModel. Apabila ada perubahan pada data di ViewModel, maka View bertanggung jawab untuk melakukan update pada antarmuka sesuai dengan data.
  3. ViewModel menyimpan data berupa LiveData agar View dapat melakukan observasi.
  4. ViewModel berkomunikasi dengan Repository (Model) untuk mendapatkan data atau perubahan data dan melakukan update terhadap data yang dimiliki.
  5. Repository bertanggung jawab untuk mengatur sumber data yang dibutuhkan. Data bisa didapatkan baik dari server maupun dari database lokal menggunakan SQLite.

Yuk Bikin!

Oke untuk memperjelas cara kerjanya, kita akan bikin satu aplikasi sederhana untuk menampilkan kartu-kartu yang terdapat dalam permainan Pokemon TCG. Kita akan melakukan HTTP Request ke PokemonTCG dan menampilkan berbagai set yang terdapat dalam permainan. Saat pengguna melakukan klik pada salah satu set, aplikasi akan menampilkan kartu apa saja yang terdapat pada set tersebut. Apabila salah satu pokemon diklik oleh pengguna, maka aplikasi akan menampilkan detil dari kartu tersebut. Beginilah aplikasi yang akan kita buat.

Setelah membuat project baru, kita harus menambahkan dependency yang akan dibutuhkan dalam part-part selanjutnya.

Selain itu, ada beberapa konfigurasi yang harus dilakukan di build.gradle pada scope module.

Terakhir tambahkan juga line ini di build.gradle pada scope project.

Okay sekarang kita siap buat implementasiin MVVM di project Pokemon TCG ini.

--

--