我有一个扩展ArrayAdapter<T>
的适配器,想要注入LayoutInflater
。代码如下所示,但inflater始终为null
public abstract class MyAdapter<T> extends ArrayAdapter<T> {
@Inject
protected LayoutInflater inflater;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// inflater here is null
}
}
答案 0 :(得分:5)
可能您已使用MyAdapter
创建了new
个实例,而不是注入它。
在这种情况下,我不建议注入LayoutInflater
,除非您想使用此类的不同实现,例如模拟LayoutInflater
进行测试。
在构造函数中获取实例:
inflater = LayoutInflater.from(context);
效率更高。我注意到注入LayoutInflater
没有任何好处
依赖注入是可以的,但是在没有必要和缓慢时不要使用它。
答案 1 :(得分:5)
在任何类中注入依赖项
RoboGuice.getInjector(context).injectMembers(this);
在构造函数中使用,只需要上下文, 伟大的作品对我来说