Android kotlin通过ViewModelFactory向ViewModel传递动态参数parameters。

问题描述 投票:0回答:1

为了转移ViewModel的附加参数parameters,我们使用ViewModelFactory。例如

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

但是当ViewModel被创建时,我不能动态地改变argumentsparameters。

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

"一些字符串值 "在fragmentactivity类中变成了harcoded。在 "一些字符串值 "中,我需要向ViewModel传递一个总是不同的日期。在片段中,用户选择了一个日期,点击了按钮,这个日期作为argumentsparameters传递给ViewModel。不适合这个ViewModelFactory?

android kotlin viewmodel
1个回答
0
投票

不需要在ViewModel构造函数中传递参数,你需要的只是一个setter & warrper类,取决于你的用途。

我想你的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` 
    }

}

然后在你的ActivityFragment中简单地调用它,就像这样。

vm.setNewStringValue("new value")
© www.soinside.com 2019 - 2024. All rights reserved.