Android kotlin 使用 ViewModelFactory 将动态参数/参数传递给 ViewModel



为了传输 ViewModel 的其他参数/参数,我们使用了 ViewModelFactory。例如

ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")

但是当创建视图模型时,我无法动态更改参数/参数

val myViewModel = ViewModelProvider(this, ExtraParamsViewModelFactory(this.requireActivity().application, "some string value")).get(SomeViewModel::class.java)

"某个字符串值"在片段/活动类中被编码。在"某个字符串值"中,我需要传递一个始终与 ViewModel 不同的日期。在片段中,用户选择一个日期,单击按钮,并将该日期作为参数/参数传递给ViewModel。不适合此视图模型工厂?

无需在 ViewModel 构造函数中传递参数。 您所需要的只是一个 setter & warrper 类,具体取决于您的使用情况。

我想你的视图模型会有这样的东西


data class CustomWrapper<T>(var value:T)
class  VM : ViewModel(){
private val stringValue = CustomWrapper<String>("")
fun setNewStringValue(value:String){
stringValue.value = value
//TODO:: update stuff related to `stringValue` 
}
}

然后在您的活动/片段中。简单地称它..喜欢这个

vm.setNewStringValue("new value")

相关内容

  • 没有找到相关文章

最新更新