在MVP模式中,适配器是否应该包含模型,或者演示者是否应该拥有模型并让适配器引用它?

Sre*_*ree 5 mvp android presenter android-adapter

目前我有它,以便适配器可以引用其中的所有模型.但让演示者只持有模型并且适配器可以简单地引用它们是否更好?

例如:

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();
}


}
Run Code Online (Sandbox Code Playgroud)

这样,当Presenter获取更多模型时,它只是getAdapter().notfiyDataSetChanged();在获取后调用.

Jos*_*ens 5

你可以用任何一种方式.有些人会说将适配器视为视图的一部分并使其尽可能愚蠢,但如果你做得对,让适配器保存数据绝对有好处.

例如,我使用带有泛型的抽象基础适配器,该适配器包含一个数据对象列表以驱动recyclerview.它为列表提供了所有标准的CRUD操作(添加,更新,删除,移动等).这些方法还处理通知适配器的更改,因此我的客户端代码不必担心它.它只是将一个对象交给适配器或告诉它删除/更改一个,然后适配器处理其余的.

这里的一大好处是CRUD操作的重复样板代码量的大幅减少以及与recyclerviews交互的各个角色的数据集更改通知.如果你有一两个以上的回收视图,那么节省的费用会比盲目地遵守口头禅更快.