Suas ideias em realidade digital!
MVVM (Model-View-ViewModel) é um padrão de arquitetura que separa:
Ele é o padrão recomendado pelo Google para apps modernos.
com.makrosites.app
├── data
│ ├── api
│ ├── repository
│ └── model
├── ui
│ ├── login
│ └── home
└── viewmodel
data class User(
val id: Int,
val name: String,
val email: String
)
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
}
}
class UserViewModel(
private val repository: UserRepository
) : ViewModel() {
val users: LiveData<List<User>> = repository.getUsers()
}
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
}
}
}
Você pode integrar essa estrutura com: