Как внедрить репозиторий в ViewModel? - PullRequest
0 голосов
/ 13 апреля 2019

Я использую Кинжал 2, и у меня DiComponent определяется следующим образом:

@Singleton
@Component(modules = {
        AndroidSupportInjectionModule.class,
        ApplicationModule.class,
        PreferenceModule.class,
        RetrofitModule.class,
        RoomModule.class,
})
public interface DiComponent  {

    void inject(SplashScreen activity);
    void inject(Home activity);

    void inject(FYViewModel viewModel);
    void inject(CFViewModel viewModel);
}

Это FYViewModel.class:

public class FYViewModel extends AndroidViewModel {
    private static final String TAG = FYViewModel.class.getSimpleName();

    @Inject
    public FYRepository mRepository;

    private LiveData<List<Post>> mPostList;

    public FYViewModel(Application application) {
        super(application);
        Log.d(TAG, "FYViewModel: " + mRepository);
//        mPostList = mRepository.getAllPosts();
    }

    public LiveData<List<Post>> getAllPosts() {
        return mPostList;
    }

    public void fetchNextData(int page) {
        mRepository.fetchNextPosts(page);
    }

}

Однако переменная mRepository всегда равна нулю.

Как я могу использовать Dagger 2 для добавления Repositroy в мои ViewModels?

1 Ответ

1 голос
/ 13 апреля 2019

Я бы порекомендовал установить для этого фабрику ViewModel.

Вот хорошее чтение:

https://proandroiddev.com/viewmodel-with-dagger2-architecture-components-2e06f06c9455

Настройте это, добавьте @Provides для класса репозитория, затем вы можете добавить свой репозиторий.

...