我正在尝试在RecyclerView
使用 airbnb.epoxy 的项目上实现 Click 功能。问题是我需要上下文才能在单击时导航到另一个活动。
我做了什么: 在 Epoxy 的示例应用程序之后,我在 EpoxyController 内实现了一个接口,其中包含在单击回收器视图中的项目时要调用的函数。然后我让我的主活动实现这个接口和方法,并在主活动中使用它的构造函数实例化控制器,并将一个对活动的引用传递给它:
public class MortgageController extends TypedEpoxyController<List<Mortgage>> {
private final MortgageCallBacks callBacks;
public MortgageController(MortgageCallBacks callBacks) {
this.callBacks = callBacks;
}
@Override
protected void buildModels(List<Mortgage> mortgages) {
Observable.from(mortgages)
.subscribe(mortgage -> new MortgageModel_().id(mortgage.id())
.mortgage(mortgage)
.clicks(callBacks::onMortgageClicked)
.addTo(this));
}
public interface MortgageCallBacks {
void onMortgageClicked(Mortgage mortgage);
}
}
主要活动的 onCreate 和onMortgageClick
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
controller = new MortgageController(this);
initRecycler();
controller.setData(mortgages);}
@Override
public void onMortgageClicked(Mortgage mortgage) {
DetailActivity.start(this, mortgage);
}
在上述工作时我想做什么Dagger2
,我在我的项目中使用并想将控制器注入到MainActivity
,注入它不是问题,而是提供活动上下文,经过一些研究,我发现环氧树脂允许活动注入,所以我想我可以将主要活动注入控制器,但我不确定这是最好的方法,也找不到实现这个的示例项目。
请告诉我最好的方法是什么