Makrosites

Suas ideias em realidade digital!

MVVM no Android: estrutura profissional com ViewModel, Repository e LiveData

MVVM no Android: estrutura profissional com ViewModel, Repository e LiveData

O que é MVVM no Android?

MVVM (Model-View-ViewModel) é um padrão de arquitetura que separa:

Ele é o padrão recomendado pelo Google para apps modernos.


Estrutura recomendada de projeto


com.makrosites.app
 ├── data
 │   ├── api
 │   ├── repository
 │   └── model
 ├── ui
 │   ├── login
 │   └── home
 └── viewmodel

1️⃣ Criando o Model

data class User(
    val id: Int,
    val name: String,
    val email: String
)

2️⃣ Criando o Repository

O Repository centraliza acesso a API ou banco.

class UserRepository(private val api: ApiService) {

    fun getUsers(): LiveData<List<User>> {
        val data = MutableLiveData<List<User>>()

        api.getUsers().enqueue(object : Callback<List<User>> {
            override fun onResponse(
                call: Call<List<User>>,
                response: Response<List<User>>
            ) {
                data.value = response.body()
            }

            override fun onFailure(call: Call<List<User>>, t: Throwable) {
                data.value = emptyList()
            }
        })

        return data
    }
}

3️⃣ Criando o ViewModel

class UserViewModel(
    private val repository: UserRepository
) : ViewModel() {

    val users: LiveData<List<User>> = repository.getUsers()
}

4️⃣ Observando na Activity

class MainActivity : AppCompatActivity() {

    private lateinit var viewModel: UserViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        viewModel = ViewModelProvider(this)[UserViewModel::class.java]

        viewModel.users.observe(this) { list ->
            // Atualiza RecyclerView
        }
    }
}

Por que usar MVVM?


MVVM + API REST + JWT

Você pode integrar essa estrutura com:


Boas práticas profissionais