I need your help...if I have many ViewModels with constructors(with different parameters - some repositories) - then it turns out there should be as many custom ViewModelProvider.Factories?then this doubles the writing of code.Something like that for example:
//1st ViewModel
OneViewModel1(val repos: OneRepository) : ViewModel() {
}
//1st Factory
class OneFactory(private val repository: OneRepository):ViewModelProvider.Factory{
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(OneViewModel::class.java)) OneViewModel(repository) as T else {
throw IllegalArgumentException("ViewModel Not Found")
}
}
}
//2d OneViewModel
TwoViewModel(val repository: TwoRepository) : ViewModel() {
}
//1st Factory
class TwoFactory(private val repository: TwoRepository):ViewModelProvider.Factory{
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(TwoViewModel::class.java)) TwoViewModel(repository) as T else {
throw IllegalArgumentException("ViewModel Not Found")
}
}
}
and so forth.....
if i have 100 ViewModels i need to create 100 Factories..Is there another way??
You don't have to create a Factory class with a different parameter (different repository). You could create just one ViewModelFactory class that have more than one parameter (repository). In your case: