Как мне с Dagger внедрить экземпляр класса, у которого слушатель является аргументом конструктора? - PullRequest
1 голос
/ 26 января 2020

Как бы я внедрил экземпляр от GetTodoRepository до MainViewModel, когда GetTodoRepository требует слушателя в своем конструкторе? Очевидно, что самым простым решением было бы иметь setListener() вместо установки его в конструкторе или использования Rx Java, но я все же хотел бы знать, как это будет сделано в противном случае.

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);
    }
}

Компонент кинжала

@Component(modules = AppModule.class)
public interface AppComponent {
void inject(MainViewModel viewModel);
void inject(GetTodoRepository getTodoRepository);

}
...