Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Singleton
- class ViewModelFactory @Inject
- constructor(private val creators: Map<Class<out ViewModel>, Provider<ViewModel>>) : ViewModelProvider.Factory {
- override fun <T : ViewModel> create(modelClass: Class<T>): T {
- var creator: Provider<out ViewModel>? = creators[modelClass]
- if (creator == null) {
- for ((key, value) in creators) {
- if (modelClass.isAssignableFrom(key)) {
- creator = value
- break
- }
- }
- }
- if (creator == null) {
- throw IllegalArgumentException("unknown model class $modelClass")
- }
- try {
- return creator.get() as T
- } catch (e: Exception) {
- throw RuntimeException(e)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement