创建一个基本的MVP Android应用程序

时间:2018-05-19 13:56:11

标签: java android mvp

public class MainActivity extends AppCompatActivity {
    //text
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void sendMessage(View view) {
        //Grab input
        EditText editText = findViewById(R.id.editText);
        String message = editText.getText().toString();
        //Throw input onto the label
        TextView destinationText = findViewById(R.id.destinationText);
        destinationText.setText(message);
    }
}

此应用程序具有带EditText,Textview和按钮的用户界面。该按钮将复制用户在EditText对象中键入的文本并将其放在TextView中。

MVP和MVVM似乎是当今最流行的设计模式。

本着学习其中一种架构设计模式的精神,我如何才能将这个最基本的应用程序改编为MVP架构模式?

1 个答案:

答案 0 :(得分:1)

在开始任何代码之前,我肯定会推荐一些研究。今天Android提供了许多有趣的应用程序架构,尽管选择最适合您的最佳应用程序并非易事,但这段旅程将让您学到很多东西。

一个很好的起点是谷歌在GitHub上的官方architecture sample projects。您不仅拥有许多不同的架构,如MVP,MVVM,MVI,而且每个架构中都有一些有趣的变体。

另一方面,Android正在努力简化创建大量库的过程。这称为Android架构组件,here you have some of their samples开始播放和采用他们的模式。

最后,如果您仍然决定选择MVP,那么您的示例中还有一些事情要做:

  1. 您的MainActivity(视图)应该实现该视图的合约(例如:MainViewContract)。
  2. 在该视图中,您应该获得对MainPresenter的引用,并引用实现MainViewContract的视图的引用。
  3. MainPresenter还将实施合同(例如:MainPresenterContract)。
  4. 基本上,您需要的所有连接都已建立。 MainPresenter将负责业务处理View输入和输出。在您的情况下,输入和输出非常简单:

    输入(MainPresenterContract):

    • void copyText(String textToCopy);

    输出(MainViewContract):

    • void showCopiedText(String copiedText);

    当用户单击该按钮时,您将通过演示者本地实例发送消息copyText。然后,演示者将获得该调用并执行调用showCopiedText的输出。由于主视图MainActivity实现了MainViewContract,因此您将在视图的本地方法中接收输出消息,您只需在Textview上绘制文本。