适配器作为演示者?或者与演示者交谈? Android 和 MVP

2023-12-21

我正在努力遵循 MVP 模式。然而,我对如何处理这种模式的适配器和视图持有者有一些疑问。

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

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

谢谢


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

回答你的问题,我认为Presenter不应该有任何 Android 逻辑。

因此,Adapter将是一个“View" 然后,即 Presenter 向其提供数据(通过Activity or Fragment),它只涉及如何呈现这一点。

我会按照如下方式做 MVP。

  1. Model- POJO、解析、存储 (SQLite) 和检索数据 (http)。显然,我会将 POJO、解析和数据库逻辑划分到子文件夹中 - 但这对我来说都属于模型。

  2. View - Activity, Fragment, Adapters- 活动和片段保留对演示者的引用,为它们提供要显示的数据。这些数据/消息如何显示、外观+感觉等在View.

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

这是一篇很棒的文章MVP http://antonioleiva.com/mvp-android/

这是一个简化的diagram http://image.slidesharecdn.com/designpatterninandroid-140926020616-phpapp02/95/design-pattern-in-android-12-638.jpg?cb=1411697226 of MVP

答案从此修改question https://stackoverflow.com/questions/41176007/mvp-design-for-android-how-to-adopt-to-my-application/41182969#41182969(也是我回答的)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适配器作为演示者?或者与演示者交谈? Android 和 MVP 的相关文章

  • Android 4.4.2 - java.lang.RuntimeException:执行未恢复的活动停止

    我在 4 4 2 设备上遇到此异常 在 Android 4 3 或更低版本的设备上无法重现 设置是我有一个家庭活动 支持的子类ActionBarActivity 家庭活动检查布尔标志 如果为真 则启动启动画面活动 是的 理想情况下启动画面出
  • Android 中用虚拟键盘捕捉按键按下的情况?

    使用物理键盘 您可以使用按键监听器 http developer android com reference android text method KeyListener html 就像是 myEditText setOnKeyListe
  • 使用库来维护免费/付费的应用程序版本

    维护免费 付费应用程序版本的共识似乎是使用库 并从每个活动中设置一个标志 以从代码库中获取不同的功能 这有多安全 据我了解 一个人可以root他们的手机 获取APK 并且可以对其进行反编译 即使代码被混淆 也不难看出该应用程序是带有标志的包
  • 使用 android AudioTrack 在左或右扬声器中播放声音

    我正在应用程序中的 AudioTrack 的帮助下播放声音 但我想在特定扬声器 耳朵中播放声音 即左扬声器或右扬声器或两个扬声器 以下代码是我用来播放声音的 private AudioTrack generateTone double fr
  • 在 Anko DSL 中创建自定义 View/ViewGroup 类

    我想创建一个自定义视图 它只是一些 Android 视图的包装 我考虑创建一个自定义 ViewGroup 来管理其子视图的布局 但我不需要这么复杂 我基本上想做的是 class MainActivity verticalLayout tex
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • ProGuard 无法与 Windows 中使用的 Joda Time 一起编译

    实际上 这是一个答案 而不是一个问题 我确实在 Windows 上花了很多时间 使用 JodaTime 并使用 ProGuard 将其包含在我的 Android 项目中 混淆器配置 libraryjars C Users Reto Docu
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • 从 TextView 中显示的数字中删除小数点[重复]

    这个问题在这里已经有答案了 对于我的简单计算器 我将结果显示在TextView 但它总是显示小数 我怎样才能删除它们 这是我的代码 public class MainActivity extends Activity implements
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • Android 从命令行停止模拟器

    这个问题与如何通过命令行关闭Android模拟器 https stackoverflow com questions 5912403 how to shut down android emulator via cmd 但是 在尝试第一个答案
  • Android - 如何更改 TimePicker 中的文本颜色?

    我正在使用 TimePicker 到 LinearLayout 中 背景颜色 黑色 但是 我看不到 TimePicker 中的数字 并且我需要在布局中将背景颜色设置为黑色 如何更改 TimePicker 中的 textColor 我已经尝试
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt

随机推荐

  • java.lang.ClassCastException:android.widget.TextView。为什么我会得到这个?

    由于某种原因 我收到 ClassCastException 错误 我真的不知道为什么 预先感谢 我是一名新程序员 任何帮助都会真正有帮助 没有双关语 Code final EditText answerBox EditText findVi
  • 使用 Pandas 数据框运行 OLS 回归

    我有一个pandas数据框 我希望能够根据 B 列和 C 列中的值预测 A 列的值 这是一个玩具示例 import pandas as pd df pd DataFrame A 10 20 30 40 50 B 20 30 10 40 50
  • Linq to SQL DataContext 生命周期管理问题

    我读过里克 斯特拉尔的article http www west wind com weblog posts 246222 aspx关于处理数据上下文的方法 我的 DBML 位于类库内 我通过在库内的单独自定义部分类中创建静态 Curren
  • iOS模拟器:双击home键有时不起作用

    使用 iOS 模拟器版本 10 双击主页按钮调出多任务处理 运行应用程序 有时没有响应 有时甚至点击 cmd shift h x2 来模拟主页按钮双击也有效 我已经和同事核实了这一点 他们也有同样的问题 我不确定这是否是模拟器中的错误 或者
  • 如何在 ODBC 查询中参数化表名

    我有一个到数据库的 ODBC 连接 我希望用户能够查看任何表中的数据 由于这是一个 ASP net 应用程序 我不能相信发送的表名不包含令人讨厌的内容 我尝试过使用参数化查询 但总是收到错误消息 必须声明表变量 这似乎是一个问题 因为它是表
  • 无法将 LINQ 绑定到 gridview

    我只是使用一个带有 group by 子句的简单 LINQ 查询 并尝试将其结果集绑定到 GridView 我的 LINQ 查询看起来像 var expData from c in WebDB TransTable group c by c
  • `reveal_type` 输出中的星号是什么意思?

    reveal type 1 Revealed type is builtins int bla 1 2 3 reveal type bla 0 Revealed type is builtins int reveal type bla 0
  • PHP 论坛软件的 RESTful 接口

    我希望将轻量级论坛功能集成到现有的 GWT 网站中 前端用GWT SmartGWT编写 后端用PHP编写 通信是通过使用 JSON 的 RESTful API 进行的 我查看了一些流行软件 SMF phpBB 等 的论坛 但无法找到任何对
  • 如何在 CouchDB 中公开用户创建,但读取访问权限为私有?

    我想公开用户创建 以便未经身份验证的用户可以在中创建新帐户 users 但只授予读取权限admin角色 这可能吗 如何 CouchDB 1 1 0 和即将推出的 1 1 1 不支持此功能 您能做的最好的事情就是拥有一个公共数据库 用户可以在
  • 切换内部HTML

    我见过各种接近我正在寻找的例子 但似乎没有一个例子能够准确地描述我想要的东西 我是 jQuery 的初学者 所以欢迎解释 我正在寻找这个来切换innerHTML from to 有人知道一种有效的方法吗 jQuery JavaScript
  • 在静默模式下运行 Kdiff3 命令

    有谁知道如何在静默模式下使用 kdiff3 命令执行本地文件的三向自动合并 无论合并结果如何 都不会显示 kdiff3 GUI 我希望看到 kdiff3 的行为如下 如果自动合并成功 Kdiff3 返回 0 代码 如果需要手动解决冲突 Kd
  • 带变量的Python Flask url_for(静态)[重复]

    这个问题在这里已经有答案了 我在用着Flask http flask pocoo org 使用 Python 并想要插入图像 使用以下命令可以正常工作 url for static filename path to img jpg 但现在我
  • 如何使用 Microsoft Graph API 检索其他用户的 MS Teams 聊天记录?

    作为全局管理员 我正在尝试检索不同用户的 MS Teams 聊天列表 但是无论我传递给哪个 IDGET beta users id chats响应始终是经过身份验证的用户的聊天列表 如何获取不同用户的聊天列表 API 文档 建议我应该能够打
  • 如何从 Fragment 或 Activity 调用挂起函数?

    我想请求许可并通过非阻塞函数来完成 因为我需要 Context 所以我无法从 ViewModel 调用它 如何为片段提供默认的 UI 范围并调用挂起函数 如下所示 class MapsFragment Fragment override f
  • 监听 CKEditor 5 中内容更改时触发的事件

    我怎样才能监听 输入 事件ckeditor5 我希望能够使用Observables像这样 Observable fromEvent this editor input debounceTime 250 subscribe gt 到目前为止
  • 如何使用 jasmine 监视 getter 属性?

    如何使用 jasmine 监视 getter 属性 var o get foo spyOn o foo and returnValue bar Doesn t work 这也不起作用 AFAICT spyOn Object getOwnPr
  • 如何从命令提示符执行 NUnit 测试用例

    如何使用 NUnit 从命令控制台执行测试用例 我有一组基于 NUnit 框架用 C 编写的 Selenium 测试 我需要简单地通过从命令控制台运行来执行测试用例 在 JUnit 中 我们可以从 cmd 运行测试用例 如下所示 java
  • 如何将所有资源包含到一个html文件中?

    是否有任何 C 库或任何免费工具可以将包含许多引用资源的 html 文件转换为一个 一体化 html 文件 主要任务是只有一个文件 这意味着我需要包含 Javascript 外部文件 这可能意味着替换所有 脚本 标签 带有 src 属性的
  • JavaScript 中两个同名的函数 - 这是如何工作的?

    据我所知 function foo aaa 只是var foo function aaa 在 JavaScript 中 所以添加function foo bbb 应该覆盖foo变量 或者忽略第二个定义 这不是重点 重点是应该有一个变量foo
  • 适配器作为演示者?或者与演示者交谈? Android 和 MVP

    我正在努力遵循 MVP 模式 然而 我对如何处理这种模式的适配器和视图持有者有一些疑问 我应该使用适配器作为演示者吗 有业务逻辑吗 或者我应该传递一个处理列表逻辑的演示者实例 然后在与适配器元素进行任何交互时调用演示者的方法 谢谢 在 An