Olá Luciano, tudo bem?
Você pode tentar solucionar dessa forma:
- Criamos uma classe
ViewModelFactory
que implementa ViewModelProvider.Factory
. Isso permitirá que criemos uma instância do nosso ViewMode
e colocamos as dependências nele.
class ViewModelFactory(
private val repository: Repository,
private val converter: Converter
) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(YourViewModel::class.java)) {
return YourViewModel(repository, converter) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
- Agora no Fragment, utilizamos
ViewModelProviders.of
para obter instância do ViewModel
, no primeiro argumento passaremos o fragment atual e a instância do ViewModelFactory
como o segundo argumento.
val api = Api()
val repository = Repository(api)
val converter = Converter()
val factory = ViewModelFactory(repository, converter)
viewModel = ViewModelProviders.of(this, factory).get(YourViewModel::class.java)
Isso é um assunto bem complexo, se ficou qualquer dúvida, não exite em voltar a pergunar, estarei á disposição :)
Forte abraço e bons estudos.