5

在 viewmodel 类中,我看到了构造函数将存储库作为参数接收的示例代码。像这样:

public SampleViewModel(SampleRepository sampleRepository){ ... }

但是在活动中,您使用这一行来创建一个 viewmodel 类ViewModelProviders.of(this).get(SampleViewModel.class)。如何将存储库作为参数传递给视图模型?我还提到过“依赖注入”。作为一个没有经验的程序员,如果 DI 与我的问题有关,任何人都可以提出建议吗?

4

1 回答 1

7

获取视图模型时,您必须提供 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);
    }
}
于 2017-08-04T20:13:02.613 回答