提问者:小点点

Android kotlin通过ViewModelFactory将动态参数/参数传递给ViewModel


为了传输ViewModel的附加参数,我们使用了ViewModelFactory。 例如

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

但是在创建ViewModel时,我不能动态更改参数/参数

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

“一些字符串值”在片段/activity类中变得硬编码。 在“some string value”中,我需要向ViewModel传递一个总是不同的日期。 在该片段中,用户选择了一个日期,单击按钮,并将该日期作为参数/参数传递给ViewModel。 不适合此ViewModelFactory?


共1个答案

匿名用户

无需在ViewModel构造函数中传递参数。 您所需要的只是一个setter&; 根据你的用途而定。

我猜你的ViewModel会有这样的东西


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` 
    }

}

然后在你的activity/片段中。。简单地叫它。。像这样

vm.setNewStringValue("new value")