First, we will create an abstract layer, and after this we will move to implementation. Let’s start with creation of base classes which will help us to follow MVP pattern.

All Activities in our project will inherit from this class. You can create a similar class for Fragments. I use ButterKnife for view binding.

This is a base presenter interface and simple implementation which assumes interaction with the view instance.

And this is a base view interface. All Activities or Fragments will implement it.

You can check out all these classes in base package of the template. It demonstrates a basic Model‑View‑Presenter (MVP) architecture and provides a foundation on which the sample is built. I also recommend you visit Android Architecture Blueprints for more details.