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> {
val data = MutableLiveData>()
api.getUsers().enqueue(object : Callback> {
override fun onResponse(
call: Call>,
response: Response>
) {
data.value = response.body()
}
override fun onFailure(call: Call>, t: Throwable) {
data.value = emptyList()
}
})
return data
}
}
class UserViewModel(
private val repository: UserRepository
) : ViewModel() {
val users: LiveData> = 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: