首页 > 解决方案 > Android MVP - 我应该从哪里阅读 Textview?

问题描述

用户单击按钮后,我想阅读活动的 TextViews 中的内容,然后从演示者那里调用一个方法以根据发送给它的信息获得返回。

但是我不知道演示者是否应该自己获取这些数据,或者当我调用他的一种方法时我是否应该从 Activity 类传递给他(这意味着在 Activity 类中的 TextFields 中获取数据,然后发送当我调用 Presenter 方法时将数据作为参数)。

我已经尝试了这两种方法,但我不知道哪种方法更有条理。

标签: javaandroidmvp

解决方案


在使用 MVP 架构模式时,您应该有对Presenteron the的引用View(在本例中, the Viewis your Activity)。他们有非常不同的职责

  • View应该尽可能地愚蠢,即它应该只负责向用户显示任何数据并收集用户输入。
  • Presenter应该负责处理显示在 上的所有数据View并充当 和 之间的View中间人Model。换句话说,对于每一个可能的用户输入,都应该有一个Presenter能够处理它的方法。

例如,在您的情况下,View负责将 TextView 的内容处理到Presenter. 然后,Presenter必须将这些内容传递给Model,它会根据您的业务逻辑对其进行处理。处理完成Model后,将结果返回给Presenter,然后准备在上显示的内容View。当内容准备好时,Presenter然后将其发送到View.

了解了所有这些,您应该能够回答您的问题。它会是这样的(伪代码):

class MyActivity
{
  // you should inject this
  Presenter myPresenter;

  TextView myTextView;

  ...

  myPresenter.doStuff(myTextView.getText().toString());
}

推荐阅读