Объявите универсальный метод провайдера в dagger2
У меня есть это обеспечивает метод в моем модуле в кинжале 2:
@Provides
ArrayAdapter<String> arrayAdapter(Context context) {
return new ArrayAdapter<>(context,R.layout.spinner_item);
}
и я внедряю его моим конструктором адаптера:
@Inject
public ReportMarhaleAdapter(ArrayAdapter<String> arrayAdapter) {
detailMains = new ArrayList<>();
ciExecStatus = new ArrayList<>();
spinnerCiStatusAdapter = arrayAdapter;
}
Можно ли использовать универсальный метод предоставления в кинжале, как это:
@Provides
ArrayAdapter<T> arrayAdapter(Context context) {
return new ArrayAdapter<>(context,R.layout.spinner_item);
}
и я объявляю тип T в инжекторе конструктора. например:
@Inject
public ReportMarhaleAdapter(ArrayAdapter<Object> arrayAdapter) {
detailMains = new ArrayList<>();
...
1 ответ
Я не кинжал про, но использование @Named
может быть лучше, чем быть общим.
@Provides
@Named("SomethingXToBeProvided")
ArrayAdapter<String> arrayAdapterX(Context context) {
return new ArrayAdapter<>(context,R.layout.spinner_item);
}
@Provides
@Named("SomethingYToBeProvided")
ArrayAdapter<String> arrayAdapterY(Context context) {
return new ArrayAdapter<>(context,R.layout.spinner_item);
}
затем
@Inject
public ReportMarhaleAdapter(
@Named("SomethingXToBeProvided") ArrayAdapter<Object> arrayAdapterX,
@Named("SomethingYToBeProvided") ArrayAdapter<Object> arrayAdapterY) {
...
}