首先最开始不了解dagger2以外和butterkinfe一样,直接拿来用就是了,就像是这样(以在activity中注入一个adapter为例):
@Inject
RecyclerView.Adapter mAdapter;
只有这句话,发现没有报错,满心欢喜的使用时却编译不通过。
Ok,老老实实学dagger2,这才发现要配置module和相关依赖
MVPArms全家桶已经帮我创建好了module和compoent,甚至compoent都不需要作修改。好的,今天我们先把最基础的使用跑通:
在moodule中加入如下代码:
@ActivityScope
@Provides//适配器需要传入List数据才能建立对象
static List<NewsBean.ResultBean> provideNewsList(){
return new ArrayList<>();
}
@ActivityScope
@Provides//建立适配器对象
static RecyclerView.Adapter provideNewsAdapter(List<NewsBean.ResultBean> list){
return new NewsAdapter(list);
}
然后在对应的activity中加入:
@Inject//数据
List<NewsBean.ResultBean> mData;
@Inject//适配器
RecyclerView.Adapter mAdapter;
然后贴出自动生成的compoent代码:
@ActivityScope
@Component(modules = NewsModule.class, dependencies = AppComponent.class)
public interface NewsComponent {
void inject(NewsActivity activity);
@Component.Builder
interface Builder {
@BindsInstance
NewsComponent.Builder view(NewsContract.View view);
NewsComponent.Builder appComponent(AppComponent appComponent);
NewsComponent build();
}
}
就可以直接使用了,不需要再New一个对象,此处只是很简单的直接使用,正规完整的学习dagger2请移步:
https://www.jianshu.com/p/39d1df6c877d
https://www.jianshu.com/p/2cd491f0da01(错别字多,但能看懂)







网友评论