在viewmodel类中,我看到了示例代码,其中构造函数将存储库中的参数作为参数。像这样:public SampleViewModel(SampleRepository sampleRepository){ ...}
但是在 Activity 中,您可以使用此行创建一个viewmodel类ViewModelProviders.of(this).get(SampleViewModel.class)
。如何将存储库作为参数传递给ViewModel?我也碰到过“依赖注入(inject)”的提法。作为一个经验不足的程序员,有人可以建议DI是否与我的问题有关吗?
最佳答案
获取 View 模型时,必须提供ViewModelProvider.Factory。
ViewModelProviders.of(this, new SampleViewModelFactory(sampleRepo)).get(SampleViewModel.class)
这是一个示例:
class SampleViewModelFactory implements ViewModelProvider.Factory {
private final SampleRepository repo;
@Inject
public SampleViewModelFactory(SampleRepository repo) {
this.repo = repo;
}
@Override
public SampleViewModel create(Class modelClass) {
return new SampleViewModel(repo);
}
}