SlideShare a Scribd company logo
Model View Presenter For Android
In this blog, we are going discuss about MVP Design Pattern for android which is a better
and modified alternate of MVC.
Note:
I am trying to make this(MVP) concept as easy as possible because everyone might have
different opinions for MVP. So, do not get confused because it is simply a design pattern
to write our code in more readable and segregated manner. The main concept we are
going to learn is how all three MODEL, VIEW, PRESENTER are interlinked and after
getting familiar with this, you can implement this design pattern in your own way.
What is MVP?
MVP is a design pattern for developers to write their code in more readable, maintainable
and
scalable manner. In MVP, our code is divided into three parts named as Model, View and
Presenter rather than placing the whole code in one Activity.
1.Model
Everything which is related with data is a part of Model. Model contains a data provider
and the code which fetches and updates the data. This part of MVP i.e Model updates the
database or communicates with a web server.
2.Presenter
The presenter will have the whole business’ logic and when an operation is performed or
data is changed then it will notify the View for updation .
3.View
A view part of MVP contains a visual part of our application like showing dialogs, toast
messages, handling visibility. View contains only that part which is related to UI and
it does not contain any logic related to displayed data, and it is controlled by presenter.
Why use MVP?
This MVP design pattern helps to segregate the code in three different parts which are
business logic (Presenter) UI part (View) and data interaction(Model). This modulation
of code is easy to understand and maintain.
For example: In our application, if we use the content provider to persist our data and
later we want to upgrade it with SQLite database then it will be very easy in case of MVP
design pattern.
How to implement MVP for Android:
A simple example for Login a user with MVP design Pattern.
1
2
3
4
5
6
7
/*The Interface LoginPresenter.*/
public interface LoginPresenter
{
/*when user click on login button from Activity*/
void handleLogin(String username, String password);
}
1
2
3
4
5
6
7
8
9
/*The Interface LoginView.*/
public interface LoginView
{
void showValidationErrorMsg();
void loginSuccessFully();
void loginFail();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* Class LoginPresenterImpl.*/
public class LoginPresenterImpl implements LoginPresenter
{
private LoginView loginView;
public LoginPresenterImpl(LoginView loginView)
{
this.loginView = loginView;
}
@Override
public void handleLogin(String username, String password)
{
if ((TextUtils.isEmpty(username) || TextUtils.isEmpty(password))
{
loginView.showValidationErrorMsg();
}
else
{
if (username.equals("Standerd") &&
password.equals("Standerd"))
{
loginView.loginSuccessFully();
}
else
{
loginView.loginFail();
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Main Activity Class.*/
public class MainActivity extends AppCompatActivity implements LoginView
{
private LoginPresenter presenter;
private TextView textViewUserName;
private TextView textViewPassword;
private Button buttonLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeView();
presenter = new LoginPresenterImpl(this);
buttonLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
presenter.login(textViewUserName.getText().toString(),
textViewPassword.getText().toString());
}
});
}
private void initializeView()
{
textViewUserName = findViewById(R.id.textViewUserName);
textViewPassword = findViewById(R.id.textViewPassword);
buttonLogin = findViewById(R.id.buttonLogin);
}
@Override
public void showValidationErrorMsg()
{
Toast.makeText(this, "Username or Password is incorrect",
Toast.LENGTH_SHORT).show();
}
@Override
public void loginSuccessFully()
{
Toast.makeText(this, "Login SuccessFully",
Toast.LENGTH_SHORT).show();
}
@Override
public void loginFail()
{
Toast.makeText(this, "Something went wrong",
Toast.LENGTH_SHORT).show();
}
}
Conclusion:
In android, it is not easy to separate interface from logic but MVP design pattern makes it
easier to prevent the activities which may end up degrading into coupled classes.
In big applications, it is important to organize and manage the code which makes the
applications easy to maintain and extend.

More Related Content

PDF
Model View Presenter For Android
InnovationM
 
PDF
Model View Presenter For Android
InnovationM
 
PPTX
Introduction To Model View Presenter
saeed shargi ghazani
 
PPTX
Model View Presenter (MVP) In Aspnet
rainynovember12
 
PDF
Mvp pattern
Khuong Vo
 
PPTX
Slide Presentation of MVP Pattern Concept
Bayu Wijaya Permana Putra
 
PPTX
Mvc vs mvp vs mvvm a guide on architecture presentation patterns
Concetto Labs
 
PPTX
MVVM presentation
Inova LLC
 
Model View Presenter For Android
InnovationM
 
Model View Presenter For Android
InnovationM
 
Introduction To Model View Presenter
saeed shargi ghazani
 
Model View Presenter (MVP) In Aspnet
rainynovember12
 
Mvp pattern
Khuong Vo
 
Slide Presentation of MVP Pattern Concept
Bayu Wijaya Permana Putra
 
Mvc vs mvp vs mvvm a guide on architecture presentation patterns
Concetto Labs
 
MVVM presentation
Inova LLC
 

What's hot (20)

PDF
Android MVVM
Vinícius Tonial Sossella
 
PPTX
Acrhitecture deisign pattern_MVC_MVP_MVVM
Dong-Ho Lee
 
PPTX
Android MVVM
David Estivariz Pierola
 
PDF
Model view view model
Binu Bhasuran
 
PPT
Ppt of Basic MVC Structure
Dipika Wadhvani
 
PPTX
Exploring MVVM, MVC, MVP Patterns - CRB Tech
Pooja Gaikwad
 
PPTX
MVVM ( Model View ViewModel )
Ahmed Emad
 
PPT
MVC(Model View Controller),Web,Enterprise,Mobile
naral
 
PPTX
The MVVM Pattern
Chris Charabaruk
 
PPTX
Model viewviewmodel2
Suraj Kulkarni
 
PPTX
Design Pattern - MVC, MVP and MVVM
Mudasir Qazi
 
PDF
5 benefits of angular js
OnGraph Technologies Pvt. Ltd.
 
PDF
Mvc, mvp, mvvm...
Yury Kisliak
 
PPTX
Class 02 Objective C
Violeta Salas
 
PDF
Structuring Your Sencha Touch Application
Sencha
 
PDF
Ui design patterns
Jorge Ortiz
 
PPT
How ASP.NET MVC Implementation Help Enterprise Web Application Development?
Grey Matter India Technologies PVT LTD
 
PPTX
Intro ASP MVC
KrishnaPPatel
 
PDF
Android MVVM TDD
KyungHo Jung
 
Acrhitecture deisign pattern_MVC_MVP_MVVM
Dong-Ho Lee
 
Model view view model
Binu Bhasuran
 
Ppt of Basic MVC Structure
Dipika Wadhvani
 
Exploring MVVM, MVC, MVP Patterns - CRB Tech
Pooja Gaikwad
 
MVVM ( Model View ViewModel )
Ahmed Emad
 
MVC(Model View Controller),Web,Enterprise,Mobile
naral
 
The MVVM Pattern
Chris Charabaruk
 
Model viewviewmodel2
Suraj Kulkarni
 
Design Pattern - MVC, MVP and MVVM
Mudasir Qazi
 
5 benefits of angular js
OnGraph Technologies Pvt. Ltd.
 
Mvc, mvp, mvvm...
Yury Kisliak
 
Class 02 Objective C
Violeta Salas
 
Structuring Your Sencha Touch Application
Sencha
 
Ui design patterns
Jorge Ortiz
 
How ASP.NET MVC Implementation Help Enterprise Web Application Development?
Grey Matter India Technologies PVT LTD
 
Intro ASP MVC
KrishnaPPatel
 
Android MVVM TDD
KyungHo Jung
 
Ad

Similar to Model View Presenter For Android (20)

PPTX
Android DesignArchitectures.pptx
SafnaSaff1
 
PPTX
Architectural Design Pattern: Android
Jitendra Kumar
 
PPTX
Mvp tech talks
Uptech
 
PDF
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
RapidValue
 
PDF
Task 2 - Educational Article – Model View Controller (MVC)
Shubham Goenka
 
PPTX
Building android app with mvp and kotlin
Shivam Chopra
 
PPTX
Design patterns in android
Zahra Heydari
 
PDF
149 152
Editor IJARCET
 
PPT
Code Camp 06 Model View Presenter Architecture
bitburner93
 
PDF
MVC in PHP
Vineet Kumar Saini
 
PDF
mvc development company in UK
Techrishblogger
 
PPTX
An overview of microsoft mvc dot net
neha sharma
 
PPT
Why MVC?
Wayne Tun Myint
 
PPTX
UI Design Patterns
aamiralihussain
 
PDF
Avigma Tech LLC- Why the MVC pattern so popular?
Mike Brown
 
PPTX
Software architecture patterns
Md. Sadhan Sarker
 
PDF
MVC Architecture: A Detailed Insight to the Modern Web Applications Developme...
CrimsonpublishersPRSP
 
PDF
mvc development company in UK.
Techrishblogger
 
PPTX
5_6163495906206292160 for study purpose.pptx
abhinavas7012
 
PDF
mvc development company in UK
Techrishblogger
 
Android DesignArchitectures.pptx
SafnaSaff1
 
Architectural Design Pattern: Android
Jitendra Kumar
 
Mvp tech talks
Uptech
 
Choosing the Right HTML5 Framework to Build your Mobile Web Application White...
RapidValue
 
Task 2 - Educational Article – Model View Controller (MVC)
Shubham Goenka
 
Building android app with mvp and kotlin
Shivam Chopra
 
Design patterns in android
Zahra Heydari
 
Code Camp 06 Model View Presenter Architecture
bitburner93
 
MVC in PHP
Vineet Kumar Saini
 
mvc development company in UK
Techrishblogger
 
An overview of microsoft mvc dot net
neha sharma
 
Why MVC?
Wayne Tun Myint
 
UI Design Patterns
aamiralihussain
 
Avigma Tech LLC- Why the MVC pattern so popular?
Mike Brown
 
Software architecture patterns
Md. Sadhan Sarker
 
MVC Architecture: A Detailed Insight to the Modern Web Applications Developme...
CrimsonpublishersPRSP
 
mvc development company in UK.
Techrishblogger
 
5_6163495906206292160 for study purpose.pptx
abhinavas7012
 
mvc development company in UK
Techrishblogger
 
Ad

Recently uploaded (20)

PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
The Future of Artificial Intelligence (AI)
Mukul
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 

Model View Presenter For Android

  • 1. Model View Presenter For Android In this blog, we are going discuss about MVP Design Pattern for android which is a better and modified alternate of MVC. Note: I am trying to make this(MVP) concept as easy as possible because everyone might have different opinions for MVP. So, do not get confused because it is simply a design pattern to write our code in more readable and segregated manner. The main concept we are going to learn is how all three MODEL, VIEW, PRESENTER are interlinked and after getting familiar with this, you can implement this design pattern in your own way. What is MVP? MVP is a design pattern for developers to write their code in more readable, maintainable and scalable manner. In MVP, our code is divided into three parts named as Model, View and Presenter rather than placing the whole code in one Activity. 1.Model Everything which is related with data is a part of Model. Model contains a data provider and the code which fetches and updates the data. This part of MVP i.e Model updates the database or communicates with a web server. 2.Presenter The presenter will have the whole business’ logic and when an operation is performed or data is changed then it will notify the View for updation . 3.View A view part of MVP contains a visual part of our application like showing dialogs, toast messages, handling visibility. View contains only that part which is related to UI and it does not contain any logic related to displayed data, and it is controlled by presenter. Why use MVP? This MVP design pattern helps to segregate the code in three different parts which are business logic (Presenter) UI part (View) and data interaction(Model). This modulation of code is easy to understand and maintain. For example: In our application, if we use the content provider to persist our data and later we want to upgrade it with SQLite database then it will be very easy in case of MVP design pattern. How to implement MVP for Android: A simple example for Login a user with MVP design Pattern.
  • 2. 1 2 3 4 5 6 7 /*The Interface LoginPresenter.*/ public interface LoginPresenter { /*when user click on login button from Activity*/ void handleLogin(String username, String password); } 1 2 3 4 5 6 7 8 9 /*The Interface LoginView.*/ public interface LoginView { void showValidationErrorMsg(); void loginSuccessFully(); void loginFail(); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 /* Class LoginPresenterImpl.*/ public class LoginPresenterImpl implements LoginPresenter { private LoginView loginView; public LoginPresenterImpl(LoginView loginView) { this.loginView = loginView; } @Override public void handleLogin(String username, String password) { if ((TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) { loginView.showValidationErrorMsg(); } else { if (username.equals("Standerd") && password.equals("Standerd")) { loginView.loginSuccessFully(); } else { loginView.loginFail(); } } } }
  • 3. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 /* Main Activity Class.*/ public class MainActivity extends AppCompatActivity implements LoginView { private LoginPresenter presenter; private TextView textViewUserName; private TextView textViewPassword; private Button buttonLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initializeView(); presenter = new LoginPresenterImpl(this); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { presenter.login(textViewUserName.getText().toString(), textViewPassword.getText().toString()); } }); } private void initializeView() { textViewUserName = findViewById(R.id.textViewUserName); textViewPassword = findViewById(R.id.textViewPassword); buttonLogin = findViewById(R.id.buttonLogin); } @Override public void showValidationErrorMsg() { Toast.makeText(this, "Username or Password is incorrect", Toast.LENGTH_SHORT).show(); } @Override public void loginSuccessFully() { Toast.makeText(this, "Login SuccessFully", Toast.LENGTH_SHORT).show(); } @Override public void loginFail() { Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show(); } } Conclusion: In android, it is not easy to separate interface from logic but MVP design pattern makes it easier to prevent the activities which may end up degrading into coupled classes. In big applications, it is important to organize and manage the code which makes the applications easy to maintain and extend.