【问题标题】:Adapter as Presenter? Or talking with a Presenter? Android and MVP适配器作为演示者?或与演示者交谈? Android 和 MVP
【发布时间】:2015-12-09 13:22:39
【问题描述】:

我正在尝试遵循 MVP 模式。但是,我对如何在这种模式下处理适配器和视图持有者有一些疑问。

我应该将适配器用作演示者吗?有业务逻辑吗?

或者我应该传递一个处理列表逻辑的演示者实例,然后在与适配器元素有任何交互时调用演示者的方法?

谢谢

【问题讨论】:

  • 我认为 Android 视图适配器纯粹是 V 范围的东西,如果适配器是演示者——这些演示者在视图实现的某个地方是内部的。此外,演示者不应包含业务逻辑,因为它们只是 M 和 V 之间的中介。在我当前基于 MVP 的项目中,演示者根本不知道列表适配器,因为他们不应该关心 某物的列表 i> 被显示(例如,一个演示者只是告诉一个视图:“以某种方式显示路由”,并且只是监听一个视图事件“onRouteSelected”,因为路由可以从任何类型的小部件获得,不一定是列表)。跨度>
  • 那么,你有没有引用适配器内部的演示者?或者您是否将侦听器添加到适配器事件,然后重定向到演示者? @LyubomyrShaydariv
  • 是的,第二种情况:适配器可以与托管视图交互,然后特定视图决定如何将事件转换/委托给演示者(或演示者侦听器 - 取决于您如何单独的演示者和侦听器接口)。

标签: android mvp


【解决方案1】:

在 Android 中实现 MVP 没有准确/正确的定义

为了回答您的问题,在我看来,Presenter 不应该有任何 Android 逻辑。

因此,Adapter 将是“View”,即 Presenter 向其提供数据(通过 Activity 或 Fragment),它只处理如何呈现。

我会按照以下方式做 MVP。

  1. 模型 - POJO、解析、存储 (SQLlite) 和检索数据 (http)。显然,我会将 POJO、解析和数据库逻辑划分为子文件夹 - 但这一切都属于我的模型。

  2. 查看 - Activity、Fragment、Adapters - 活动和片段保存对提供数据显示的 Presenter 的引用。 View 中处理了这些数据/消息的显示方式、外观和感觉等。

  3. Presenter - 中间人,为输入提供逻辑,即按钮点击、数据检索、输入验证,然后将结果传递回视图(Activity 或 @ 987654336@)

这是一篇关于MVP的精彩文章

这是 MVP 的简化版diagram

从question修改的答案(也是我回答的)

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2017-09-03
    • 2017-07-02
    相关资源
    最近更新 更多