我正在学习本教程Dagger 2 Retrofit MVp的DI / MVP / Retrofit / Rx基础
一切正常,但是我在适配器中使用上下文存在问题,如果这不只是意图,我可以使用某种方法来打开活动而不使用上下文,但是我正在使用名为{{1 }}。
Picasso
在DI之前,我使用@Override
public void onBindViewHolder(@NonNull final BookViewHolder holder, final int position) {
holder.txt_price.setText(new StringBuilder(bookList.get(position).Price).append(" تومان").toString());
holder.txt_drink_name.setText(bookList.get(position).Name);
// Picasso.with(context)
// .load(bookList.get(position).Link)
// .into(holder.img_product);
}
,但现在我不能只添加它并将其用于我的Picasso库,是否使用它并不重要,我只想知道如何传递上下文< / p>
Context context
我所做的一切都是基于上面的教程,唯一的改变是我以前使用上下文的毕加索。
我正在学习此方法,并且在其他步骤中我都很好,我试图弄清楚该怎么做才能使之成为可能,并且我应该创建另一个模块或任何有帮助的模块。
谢谢。
答案 0 :(得分:3)
仅因为您使用Dagger并不意味着您必须将其用于所有内容。通常不要使用Dagger进行UI / View相关操作更有意义。
在这种情况下,最简单的方法是使用视图上下文。
@Override
public void onBindViewHolder(@NonNull final BookViewHolder holder, final int position) {
final Context context = holder.itemView.getContext();
Picasso.with(context)
.load(bookList.get(position).Link)
.into(holder.img_product);
}
当然,如果您愿意,也可以注入上下文。一旦将上下文绑定到组件,就可以像注入其他对象一样注入上下文。一种方法是使用@BindsInstance
将其直接绑定到您的Component.Builder
或Subcomponent.Builder
中。