Android Kotlin 中的 ViewModelProviderFactory
Android ViewModelProviderFactory in kotlin
我正在尝试使用 Architecture Components from Google. Specifically I want to implement a ViewModelProvider.Factory 创建一个采用构造函数参数的 ViewModel,如下所示:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>?): T {
return MyViewModel(handler) as T
}
}
我的 ViewModel 如下所示:
class MyViewModel(val handler: Handler) : ViewModel()
任何人都知道最后如何避免讨厌的转换:
return MyViewModel(handler) as T
你可以这样写:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return modelClass.getConstructor(Handler::class.java).newInstance(handler)
}
}
这将适用于任何接受 Handler
作为构造函数参数的 class,如果 class 没有正确的构造函数,将抛出 NoSuchMethodException
。
我正在尝试使用 Architecture Components from Google. Specifically I want to implement a ViewModelProvider.Factory 创建一个采用构造函数参数的 ViewModel,如下所示:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>?): T {
return MyViewModel(handler) as T
}
}
我的 ViewModel 如下所示:
class MyViewModel(val handler: Handler) : ViewModel()
任何人都知道最后如何避免讨厌的转换:
return MyViewModel(handler) as T
你可以这样写:
class MyFactory(val handler: Handler) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return modelClass.getConstructor(Handler::class.java).newInstance(handler)
}
}
这将适用于任何接受 Handler
作为构造函数参数的 class,如果 class 没有正确的构造函数,将抛出 NoSuchMethodException
。