mvp框架的简单使用
1.概述:mvp现在是最常用的一种开发框架,以下是一个仿登录的操作
2.思路:net包仿网络请求,
bean包user数据
model包定义接口是业务模型层
view包定义接口是只完成页面中的控件的直接操作
presenter拿到model对象和View对象进行操作
mainactivity操作视图
3.实现代码:
net包
public class NetUtils {
public static void getNetData(){
SystemClock.sleep(2000);
}
}
bean包登录的用户名和密码
public class UserInfo {
public String name;
public String pass;
public UserInfo(String pass, String name) {
this.pass = pass;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
model包
业务模型层
public interface IUserLonginModel {
//登录方法
public void login(String name,String pass);
//保存密码方法
public void saveUserInfo(String name,String pass);
//得到用户信息并返回方法
public UserInfo getUserInfo();
}
在建一个类实现接口
public class UserLoginModel implements IUserLonginModel{
Context context;
SharedPreferences sp;
SharedPreferences.Editor editor;
public UserLoginModel(Context context) {
this.context = context;
sp=context.getSharedPreferences(“user”,Context.MODE_PRIVATE);
editor=sp.edit();
}
@Override
public void login(String name, String pass) {
NetUtils.getNetData();
}
@Override
public void saveUserInfo(String name, String pass) {
editor.putString("name",name);
editor.putString("pass",pass);
editor.commit();
}
@Override
public UserInfo getUserInfo() {
String name=sp.getString("name","");
String pass=sp.getString("pass","");
UserInfo user=new UserInfo(name,pass);
return user;
}
}
//view包只完成页面中的控件的直接操作
public interface IUserLoginView {
public void setTextName(String name);
public void setTextPass(String pass);
public String getTextName();
public String getTextPass();
}
//最后在mainactivity
package com.example.day1_mvp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.example.day1_mvp.presenter.LoginPresenter;
import com.example.day1_mvp.view.IUserLoginView;
public class MainActivity extends AppCompatActivity implements IUserLoginView {
EditText et_name,et_pass;
Button btn;
LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
et_name= (EditText) findViewById(R.id.et_name);
et_pass= (EditText) findViewById(R.id.et_pass);
presenter=new LoginPresenter(this,this);
presenter.showUserInfo();
btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
presenter.login();
}
});
}
@Override
public void setTextName(String name) {
et_name.setText(name);
}
@Override
public void setTextPass(String pass) {
et_pass.setText(pass);
}
@Override
public String getTextName() {
return et_name.getText().toString();
}
@Override
public String getTextPass() {
return et_pass.getText().toString();
}
}
//布局