目前我已经拥有它,以便适配器可以引用其中的所有模型。但让演示者只持有模型并且适配器可以简单地引用它们会更好吗?
例如:
public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private Presenter presenter;
public Adapter(Presenter presenter){
this. presenter = presenter;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Model m = presenter.getModels().get(position);
// bind model to view holder
}
@Override
public int getItemCount() {
return presenter.getModels().size();
}
}
这样,当Presenter获取更多模型时,只需在获取后调用getAdapter().notfiyDataSetChanged();
。
答案 0 :(得分:5)
你可以用任何一种方式。有些人会说适配器是视图的一部分并尽可能地使它变得愚蠢,但是如果你做得对,让适配器保存数据绝对有好处。
例如,我使用带有泛型的抽象基础适配器,该泛型持有数据对象列表以驱动recyclerview。它为列表提供了所有标准的CRUD操作(添加,更新,删除,移动等)。这些方法还处理通知适配器的更改,因此我的客户端代码不必担心它。它只是将一个对象交给适配器或告诉它删除/更改一个,然后适配器处理其余的。
这里的一大好处是CRUD操作的重复样板代码量的大幅减少以及与recyclerviews交互的各个角色的数据集更改通知。如果你有一两个以上的回收视图,那么节省的费用会比盲目地遵守口头禅更加有利。
答案 1 :(得分:4)
通常,适配器被视为View的实现细节。
Presenter不应该知道View实现细节。
适配器的工作是保存一组项目并将其发布到视图。适配器不应该知道Presenter,模型,其他视图等。
适配器的数据流,据我所知:
模型 - &gt;演示者 - &gt;查看 - &gt;衔接子&GT; ItemView控件
控制流程相反,最好是跳过适配器。
随意在项目问题中提问。