你如何对待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对象,或者有视图对象来执行调用,通知和加载?
有一个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对象,或者有视图对象来执行调用,通知和加载?
解决方法
适配器是纯视图层.映射所有交互,例如单击RecyclerView ViewHolder中的按钮返回到Activity / Fragment,然后将其转发到Activity的/ Fragment的演示者.
RecyclerView有点棘手,因为ViewHolders可以在滚动等过程中回收.通过回到“父”Activity / Fragment和相应的Presenter,更新ViewHolder(即使用DiffUtils的动画)更容易且更不容易出错.将ViewHolder作为显示数据对象的方式,但不为每个ViewHolder添加Presenter来协调ViewHolder.实际上,只需确保ViewHolder获取包含ViewHolder需要显示的所有信息的数据对象,但不要使ViewHolders Presenter“控制”此数据对象.否则,你最终会弄得一团糟,因为一个ViewHolder得到了他的Presenter的更新,也许ViewHolder在同一时间被回收,可能是屏幕方向发生了变化,或者“父”Activity / Fragment Presenter更新了适配器的整体数据集等帮自己一个忙,只使用一个Presenter“协调/控制”RecyclerView应该使用“父母”Activity / Fragment Presenter显示的数据.