适配器在Mvp模式中的作用?

时间:2017-03-20 15:53:20

标签: android mvp

你如何对待MVP模式中的适配器?例如,在此项目中https://github.com/msahakyan/nested-recycler-view 有一个MovieAdapter, https://github.com/msahakyan/nested-recycler-view/blob/master/app/src/main/java/com/android/msahakyan/nestedrecycler/adapter/MovieAdapter.java这家伙有一个recyclierview作为这个适配器的项目,(如果你看看他的项目,他已经在他的主屏幕上嵌套了recyclierview。)因为他有这样的项目,他做服务电话和其他通知,加载此适配器中的数据(从服务获取)等操作。(没有与相关片段/活动的通信)如您所见,此适配器有很多工作要做。如果你这样做,你将如何在mvp模式中实现这一点?具体来说,在这种情况下,您是否在适配器中有presenter对象,或者有视图对象来执行调用,通知和加载?

1 个答案:

答案 0 :(得分:14)

适配器是纯视图层。将所有交互映射,例如单击RecyclerView ViewHolder中的按钮,返回活动/片段,然后将其转发给活动/片段的演示者。

RecyclerView有点棘手,因为ViewHolders可以在滚动等过程中回收。 通过回到父母的道路" Activity / Fragment和相应的Presenter更新ViewHolder更简单,更不容易出错(即使用DiffUtils动画)。将ViewHolder作为显示数据对象的方式,但不要为每个ViewHolder添加Presenter以协调ViewHolder。实际上,只需确保ViewHolder获取一个数据对象,其中包含ViewHolder需要显示的所有信息,但不要让这个数据对象受到控制"由ViewHolders Presenter提供。否则,你最终会弄得一团糟,因为一个ViewHolder会被他的Presenter更新,也许ViewHolder在同一时间内被回收,可能是屏幕方向发生了变化,也可能是父母" Activity / Fragment Presenter已更新适配器的整个数据集等。 帮自己一个忙,只使用一个Presenter"协调/控制" RecyclerView的数据应该通过使用" parent"活动/片段演示者。