Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. package me.alhaz.tutorial.architecturecomponent.viewmodels.movies.factory
  2.  
  3. import android.app.Application
  4. import androidx.lifecycle.ViewModel
  5. import androidx.lifecycle.ViewModelProvider
  6. import me.alhaz.tutorial.architecturecomponent.helper.Injection
  7. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.MovieRepository
  8. import me.alhaz.tutorial.architecturecomponent.viewmodels.movies.detail.MovieDetailViewModel
  9. import me.alhaz.tutorial.architecturecomponent.viewmodels.movies.list.MovieListViewModel
  10.  
  11. class MovieViewModelFactory private constructor(private val movieRepository: MovieRepository) : ViewModelProvider.NewInstanceFactory() {
  12.  
  13. companion object {
  14.  
  15. @Volatile
  16. private var INSTANCE: MovieViewModelFactory? = null
  17.  
  18. fun getInstance(application: Application): MovieViewModelFactory? {
  19. if (INSTANCE == null) {
  20. synchronized(MovieViewModelFactory::class.java) {
  21. if (INSTANCE == null) {
  22. INSTANCE =
  23. MovieViewModelFactory(
  24. Injection.provideMovieRepository(application)
  25. )
  26. }
  27. }
  28. }
  29. return INSTANCE
  30. }
  31.  
  32. }
  33.  
  34. @Suppress("UNCHECKED_CAST")
  35. override fun <T : ViewModel> create(modelClass: Class<T>): T {
  36. if (modelClass.isAssignableFrom(MovieListViewModel::class.java)) {
  37. return MovieListViewModel(movieRepository) as T
  38. }
  39. else if (modelClass.isAssignableFrom(MovieDetailViewModel::class.java)) {
  40. return MovieDetailViewModel(movieRepository) as T
  41. }
  42.  
  43. throw IllegalArgumentException("Unknown ViewModel class: " + modelClass.name)
  44. }
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement