问题标签 [android-mvp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
505 浏览

android - 使用 RxAndroid MVP Retrofit 修改回调

我一直在使用with with一段时间的MVP架构。我想用我的回调替换我的回调,但我似乎无法掌握它应该如何完成。RetrofitcallbacksRxJava/Android

我有一个拦截器(交互器)的接口:

然后是拦截器实现:

在注释代码中,您可以看到我将如何使用回调来执行此操作,但 Rx 要求我返回Observable。我该怎么做?以及如何通知我的演示者数据已被提取?

演示者界面:

和主持人:

0 投票
1 回答
2305 浏览

android - gson 中的 java.lang.StackOverflowError

在以 MVP 结构构建我的应用程序时,我遇到了一个问题,当我使用 Retrofit 调用 Web 服务以响应成功时,我将整个数据传递到 json 字符串中,因此它会促使我这样做。

我的原木猫:

这是我的改造 API 调用:

这是我收到响应的主要活动:

从 Setdefaultvalue() 我正在检查我对活动的响应:

这是我的两个模型类:(PitchList_Res)

PitchList_Data.java

0 投票
2 回答
676 浏览

android - Android app architecture design pattern

I'm looking to create a basic architecture of Android app boilerplate with (Login, SignUp, Other features that every app has). After lot of research I found that going with MVP is going to be best choice.

However I'm not getting the right way to implement MVP. I'm a beginner with this.

If someone can guide me with the right sources, it will be of great help.

0 投票
1 回答
80 浏览

android - MVP RxJava2 - 管理网络错误

我尝试使用 RxJava2 遵循 MVP 设计模式。我是新手。当我从 API 请求数据时,在我的 Presenter 中我这样调用我的模型:

当出现错误时,我想向用户显示一个带有消息的对话框。

所以我在想的是displayErrorDialog(String message)在视图上创建一个。但问题是:我在应用程序的任何地方都调用了 API,所以这意味着我的所有视图都必须实现该方法!

该对话框需要由视图显示:

  • 遵循MVP设计模式
  • 因为我需要当前的上下文来显示对话框。

我正在寻找一种更好的解决方案,以便不必在每次有新视图时都实施相同的方法。

0 投票
1 回答
353 浏览

android - Android MVP:处理对 RecyclerView 的更改

在 Android 应用程序中使用 RecyclerView 时,许多帖子和教程都使用适配器处理列表的更新,使用 DiffUtil 等解决方案。然而,这似乎并不遵循 MVP,因为适配器存在于视图层中。

那么,如何让 Presenter(或模型)负责管理对 RecyclerView 显示的项目列表的更改,同时保持 RecyclerView 最新?

例如,RecyclerView 显示手机可以连接的可用蓝牙设备列表,每行包含设备名称和 RSSI 值。演示者想要从最大到最小的 RSSI 值显示设备,并且想要插入发现的新设备并删除不再可用的设备。

源 1源 2是我用来使用 MVP 实现 RecyclerViews 的很好的入门者,但它们不包括主动更改的数据集。

0 投票
0 回答
342 浏览

java - 将演示者传递给父视图的最佳方式

我正在编写基于多层 MVP 的应用程序。所有层的通用方法都转到 BASE 层。然后每个子类的特定方法转到 MIDDLE 和 TOP 层。

从代码示例中,您可以看到我将演示者的视图作为 create 方法的参数传递。

我的问题是我应该如何将我的演示者传递给父母的意见。我可以按照示例中所示的方式进行操作,其中 BASE 层演示者在创建视图时将其自身附加到视图?或者应该一个 TOP 层片段(创建演示者的地方)将演示者附加到父片段。

或者也许有另一种方法来处理这种情况。

基层

中间层

顶层

0 投票
1 回答
778 浏览

java - 调度程序引发致命异常 - Android 中的 rxJava2

我正在使用 MVP 向自己介绍 Android 中的 rxJava2。

对于最初的步骤,我创建了一个活动、一个演示者和一个模型对象(每个对象都有一个接口类)。

在我的活动中,我创建了演示者,并尝试加载数据,并在准备好时通知视图:

在演示者内部,在 loadData 方法上,只是回调查看

方法 getBooks() 如下(我想使用 API,但到目前为止,为了简单起见,我只是将数据硬编码)

view.displayBooks(bookList) 方法只有一条 Toast 消息(再次,为简单起见)

看起来很简单,应该正确返回三本书的吐司......但是在执行时,它会引发异常:

在 Unitary Test (Mockito) 中,一切似乎都运行良好,但一起失败了。我的怀疑是存在某种线程问题。有人可以帮我解决这个问题吗?

另外,知道我想使用改造,我使用的方法是正确的吗?或者也许线程应该在模型/存储库类中管理?

希望我提供的信息足以澄清问题出在哪里

提前致谢!

0 投票
1 回答
252 浏览

android - Android MVP - RxJava 和改造 - 最佳方法

我正在研究如何使用 MVP、RxJava2 和改造来开发 Android 应用程序。

在我的演示者中,代码如下:

Retrofit 接口定义如下:

存储库只是

它工作正常。问题如下:我的意图是仅当本地数据不可用时才在db中获取网络数据。

考虑到这一点,调度程序在演示者中管理是否正确?还是应该在存储库中管理它们?

我的猜测是 Presenter 是正确的地方,因为它创建了一个线程,因此存储库可以按顺序执行它的工作(获取 db,如果没有,然后获取网络/缓存;在获取数据的任何地方返回数据),并且当提供数据时,在 Consumer 的 accept 方法中通知视图。

这是对的吗?还是应该以不同的方式完成?

另一点是:我如何使用 Mockito 存储库进行测试?我的意思是 dataModelRepository.getDataList() 方法?不知道如何为单个对象做任何断言......

提前致谢!

0 投票
0 回答
97 浏览

java - MVP 的 Dagger2 合并组件

我有一个当前的应用程序,我正在尝试通过练习来学习 MVP 和 Dagger2,但我必须遗漏一些东西。

我有以下课程:

[MVP]

登录活动(查看)

登录演示者(演示者)

登录模型(模型)

[匕首 2]

活动范围

应用程序上下文

应用组件

应用模块

登录组件

登录模块

当我编译应用程序时,我收到以下错误:

我想做的是拥有单独的组件并将它们组合起来,但到目前为止我还没有成功。

已经尝试让 LoginComponent 从 ApplicationComponent 继承,但也没有骰子。

0 投票
1 回答
877 浏览

android - MVP(Android)中的演示者在片段中被删除/为空

我正在使用 MVP。我的活动包含一个片段。我正在初始化,然后将演示者设置为 Main-Activity 的 on Create 方法中的片段,如下所示。

在我的 mainFrgament 类中,我是 setPresenterFunction 中的 settinf Presenter,如下所示。

有时,在 mainFragment 的 OnCreateView 中执行以下代码所示的搜索操作时,我收到一条错误消息,指出我的转发 “尝试在空对象引用上调用接口方法”

有时我会收到此错误,有时我不会。我不明白为什么会这样