Roboguice注入适配器

Dmi*_*sov 4 android code-injection roboguice

我有一个适配器,它扩展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
    }
}
Run Code Online (Sandbox Code Playgroud)

paw*_*eba 5

可能你已经创建了MyAdapter实例,new而不是注入它.

在这种情况下,我不建议注入LayoutInflater,除非你想使用这个类的不同实现,例如模拟LayoutInflater测试.

在构造函数中获取实例:

inflater = LayoutInflater.from(context);
Run Code Online (Sandbox Code Playgroud)

它会更有效率.我注意到注射没有任何好处LayoutInflater.
依赖注入是可以的,但是在没有必要和缓慢时不要使用它.


Ser*_*kyi 5

在任何类中注入依赖项

 RoboGuice.getInjector(context).injectMembers(this);
Run Code Online (Sandbox Code Playgroud)

在构造函数中使用,只需要上下文,对我来说很棒