How would I inject an instance of GetTodoRepository
to MainViewModel
when GetTodoRepository
requires a listener in its constructor? Obviously the easist solution would be to have setListener()
instead of setting it in the constructor or using RxJava, but I would still like to know how it would be done otherwise.
MainViewModel
public class MainViewModel extends ViewModel implements GetTodoRepository.ResultListener {
private GetTodoRepository getTodoRepository;
public MainViewModel() {
getTodoRepository = new GetTodoRepository(this);
}
GetTodoRepository
public class GetTodoRepository {
private ResultListener listener;
public GetTodoRepository(@NonNull ResultListener listener) {
this.listener = listener;
}
public interface ResultListener {
void onGetTodoSuccess(String data);
void onGetTodoFailed(String msg);
}
}
Dagger Component
@Component(modules = AppModule.class)
public interface AppComponent {
void inject(MainViewModel viewModel);
void inject(GetTodoRepository getTodoRepository);
}