您如何对待 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。)因为他有这样一个项目,他做服务调用和其他通知,加载数据(从服务获取) 等在此适配器中的操作。(没有与相关 fragment/Activity 的通信)如您所见,此适配器有很多工作要做。如果你这样做,你将如何在 mvp 模式中实现它?具体来说,在这种情况下,您会在适配器中使用 Presenter 对象,还是使用 View 对象来进行调用、通知和加载?
最佳答案
Adapter 是纯 View 层。将所有交互(例如单击 RecyclerView ViewHolder 中的按钮)映射回 Activity/Fragment,然后将其转发给 Activity/Fragment 的演示者。
RecyclerView 有点棘手,因为 ViewHolder 可以在滚动等过程中回收。 通过回到“父”Activity/Fragment 和相应的 Presenter,更新 ViewHolder(即使用 DiffUtils 的动画)会更容易且更不容易出错。将 ViewHolder 只是作为显示数据对象的一种方式,但不要为每个 ViewHolder 添加 Presenter 以协调 ViewHolder。实际上,只需确保 ViewHolder 获取包含 ViewHolder 需要显示的所有信息的数据对象,但不要让该数据对象由 ViewHolders Presenter“控制”。否则,你最终会一团糟,因为一个 ViewHolder 被他的 Presenter 更新了,也许 ViewHolder 同时被回收了,也许屏幕方向发生了变化,或者也许“父”Activity/Fragment Presenter 更新了整个适配器数据集等 帮自己一个忙,只使用一个 Presenter 来“协调/控制”RecyclerView 应使用“父级”Activity/Fragment Presenter 显示的数据。
关于android - 适配器在 Mvp 模式中的作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42908174/