2017-07-20 15 views
1

viewmodelクラスでは、コンストラクタがリポジトリをパラメータとして受け取るサンプルコードを見てきました。これと同じように:Androidアーキテクチャのコンポーネント:リポジトリパラメータの挿入方法

public SampleViewModel(SampleRepository sampleRepository){ ... }

しかしアクティビティでは、viewmodelのクラスViewModelProviders.of(this).get(SampleViewModel.class)を作成するには、この行を使用しています。どのようにリポジトリをパラメータとしてビューモデルに渡しますか?私はまた、「依存性注入」について言及しています。 DIが私の質問に関係しているなら、経験の浅いプログラマーであれば誰にでもアドバイスできますか?

+0

あなたは何 'SampleRepository'を意味していますか?任意のコードを指すことができますか? – pskink

+0

ええと、アンドロイドデベロッパーサイトhttps://developer.android.com/topic/libraries/architecture/guide.htmlのサンプルコードスニペットをフォローしていました。 「ViewModelとリポジトリの接続」見出しの下で、 'UserProfileViewModel'コンストラクタは@Injectを使ってリポジトリを挿入しますか?しかし、リポジトリが実際に構築されて渡される場所はどこですか? –

答えて

2

あなたがviewmodelを取得したら、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); 
    } 
} 
関連する問題