Android MVP-我应该在哪里阅读Textview?

时间:2018-08-17 10:01:40

标签: java android mvp

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

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

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

3 个答案:

答案 0 :(得分:2)

使用MVP架构模式时,应该在Presenter上引用View(在这种情况下,View是您的Activity )。他们负有不同的职责

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

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

了解所有这些,您应该可以回答您的问题。就像这样(伪代码):

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

  TextView myTextView;

  ...

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

答案 1 :(得分:2)

您将字符串传递给演示者所需的方法,然后执行您想要的操作。

button.setOnClickListenr(new View.OnClickListener() {
@Override
public void onClick(View view) {
    String str = myTextView.getText().toString();
    presenter.doSomething(str);
)}

答案 2 :(得分:0)

为什么需要阅读TextViews中的内容? View中显示的所有数据均应来自Presenter。 您的数据应保存在存储库中,Presenter可以在存储库中获取所需的所有内容。