浅谈 android mvp 模式的使用
来源:互联网 发布:js ios 时间戳格式化 编辑:程序博客网 时间:2024/04/30 02:01
所谓的mvp,即是(model-处理业务逻辑(主要是数据读写,或者与后台通信(其实也是读写数据)),view-处理ui控件,presenter-主导器,操作model和view)
那么现在直接来看下小demo
首先
Bean
package com.czh.mvptraining.bean;/** * Created by Administrator on 2016/7/27. */public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}ILoginListener
package com.czh.mvptraining.Util;import com.czh.mvptraining.bean.User;/** * Created by Administrator on 2016/7/27. */public interface ILoginListener { void loginSuccess(User user); void loginFailed();}IUserBiz
package com.czh.mvptraining.Util;/** * Created by Administrator on 2016/7/27. */public interface IUserBiz { void login(String username, String password, ILoginListener iLoginListener);}IUserLoginView
package com.czh.mvptraining.Util;import com.czh.mvptraining.bean.User;/** * Created by Administrator on 2016/7/27. */public interface IUserLoginView { String getUsername(); String getPassword(); void showLoading(); void hideLoading(); void clearUsername(); void clearPassword(); void toMainActivity(User user); void showFailedError();}UserBiz
package com.czh.mvptraining.Util;import com.czh.mvptraining.bean.User;/** * Created by Administrator on 2016/7/27. */public class UserBiz implements IUserBiz { @Override public void login(final String username, final String password, final ILoginListener iLoginListener) { new Thread() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } //模拟登陆成功 if("czh".equals(username)&&"123".equals(password)){ User user = new User(); user.setUsername(username); user.setPassword(password); iLoginListener.loginSuccess(user); }else{ iLoginListener.loginFailed(); } } }.start(); }}UserLoginPresenter
package com.czh.mvptraining.Util;import android.os.Handler;import com.czh.mvptraining.bean.User;/** * Created by Administrator on 2016/7/27. */public class UserLoginPresenter { private IUserBiz iUserBiz; private IUserLoginView iUserLoginView; private Handler mHandler = new Handler(); public UserLoginPresenter(IUserLoginView iUserLoginView) { this.iUserLoginView = iUserLoginView; this.iUserBiz = new UserBiz(); } public void login(){ iUserLoginView.showLoading(); iUserBiz.login(iUserLoginView.getUsername(), iUserLoginView.getPassword(), new ILoginListener() { @Override public void loginSuccess(final User user) { mHandler.post(new Runnable() { @Override public void run() { iUserLoginView.hideLoading(); iUserLoginView.toMainActivity(user); } }); } @Override public void loginFailed() { mHandler.post(new Runnable() { @Override public void run() { iUserLoginView.showFailedError(); iUserLoginView.hideLoading(); } }); } }); } public void clear(){ iUserLoginView.clearUsername(); iUserLoginView.clearPassword(); }}xml文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:context=".main.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="20dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="username:" /> <EditText android:id="@+id/act_main_username" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="20dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password:" /> <EditText android:id="@+id/act_main_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberPassword" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="20dp"> <Button android:id="@+id/act_main_login" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="login" /> <Button android:id="@+id/act_main_clear" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="clear" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <ProgressBar android:id="@+id/act_main_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:visibility="gone" /> </LinearLayout></RelativeLayout>MainActivity
package com.czh.mvptraining.main;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.Toast;import com.czh.mvptraining.R;import com.czh.mvptraining.Util.IUserLoginView;import com.czh.mvptraining.Util.UserLoginPresenter;import com.czh.mvptraining.bean.User;public class MainActivity extends AppCompatActivity implements IUserLoginView { private EditText act_main_username; private EditText act_main_password; private ProgressBar act_main_progress; private Button act_main_login; private Button act_main_clear; private UserLoginPresenter userLoginPresenter = new UserLoginPresenter(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { act_main_username = (EditText) findViewById(R.id.act_main_username); act_main_password = (EditText) findViewById(R.id.act_main_password); act_main_progress = (ProgressBar) findViewById(R.id.act_main_progress); act_main_login = (Button) findViewById(R.id.act_main_login); act_main_clear = (Button) findViewById(R.id.act_main_clear); act_main_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { userLoginPresenter.login(); } }); act_main_clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { userLoginPresenter.clear(); } }); } @Override public String getUsername() { return act_main_username.getText().toString().trim(); } @Override public String getPassword() { return act_main_password.getText().toString().trim(); } @Override public void showLoading() { act_main_progress.setVisibility(View.VISIBLE); } @Override public void hideLoading() { act_main_progress.setVisibility(View.GONE); } @Override public void clearUsername() { act_main_username.setText(""); } @Override public void clearPassword() { act_main_password.setText(""); } @Override public void toMainActivity(User user) { Toast.makeText(this, user.getUsername() + " loginSuccess to MainActivity", Toast.LENGTH_SHORT).show(); } @Override public void showFailedError() { Toast.makeText(this, "loginFailed", Toast.LENGTH_SHORT).show(); }}
0 0
- 浅谈 android mvp 模式的使用
- Android MVP模式 浅谈
- Android 浅谈Mvp模式
- android 浅谈mvp模式
- 浅谈Android MVP模式
- 浅谈Android MVP模式
- Android MVP 模式的使用
- Android MVP模式的使用
- Android MVP模式的使用
- 浅谈Android中的MVP模式
- Android开发MVP模式浅谈
- 浅谈MVP的使用
- 浅谈Android中MVP模式与MVC模式的区别
- 浅谈android的MVP设计模式之内存泄露问题
- android使用MVP模式
- MVP模式在android的使用
- Android中 MVP模式的使用
- Android中Mvp模式的使用
- Android EventBus源码解析 带你深入理解EventBus
- poj 1062 昂贵的聘礼 (dijkstra)
- JS闭包的使用
- 后缀数组小结
- 经典报错bug
- 浅谈 android mvp 模式的使用
- linux安装maven
- 项目svn从一个地址换到了另一个地址, 现在需要把项目关联到另一个svn地址上
- c++函数返回引用
- poj2406Power Strings
- 编写ftp客户端连接linux自带ftp服务vsftpd中遇到的问题
- [Web基础笔记]html部分
- 杭电 hdu 2925 Musical Chairs 递推公式 和 容器
- ROS坐标系