我在匕首2中的模块中提供了此provider方法:
@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;
}
是否可以在像这样的匕首中使用通用的Provide方法:
@Provides
ArrayAdapter<T> arrayAdapter(Context context) {
return new ArrayAdapter<>(context,R.layout.spinner_item);
}
并且我在构造函数注入中声明T类型。例如:
@Inject
public ReportMarhaleAdapter(ArrayAdapter<Object> arrayAdapter) {
detailMains = new ArrayList<>();
...
答案 0 :(得分:0)
我不是匕首专业人士,但是使用@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) {
...
}