1.Model类
用来专门进行数据库操作,文件操作,网络操作等相关
import android.content.Context;
import android.content.SharedPreferences;
public class SpModel {
private SharedPreferences.Editor mEdit;
//进行注册操作
public boolean register(String name, String pwd, Context mContext) {
SharedPreferences sp = mContext.getSharedPreferences("godv", Context.MODE_PRIVATE);
mEdit = sp.edit();
mEdit.putString(name, pwd);
mEdit.apply();
return true;
}
//读取操作
public String read(String name, Context mContext) {
SharedPreferences sp = mContext.getSharedPreferences("godv", Context.MODE_PRIVATE);
String str = sp.getString(name, null);
return str;
}
//进行登录操作
public void login(String name, String pwd) {
}
}
2.presenter类
用来将view层数据传递给model层进行处理、将model层返回的数据返回给View处理
注意presenter需要持有model层引用、View层引用(利用构造方法,这里的View泛指Activity、Fragment)
import android.content.Context;
public class SpPresenter {
//持有m引用
private SpModel mSpModel;
private SpView spView;
public SpPresenter(SpView spView) {
this.spView = spView;
this.mSpModel = new SpModel();
}
public void register(String name, String pwd, Context mContext) {
boolean register = mSpModel.register(name, pwd, mContext);
spView.onRegistResult(register);
}
public void read(String name, Context mContext) {
String res = mSpModel.read(name, mContext);
spView.onReadResult(res);
}
}
3.View接口
主要是用来与Activity进行交互 在这里定义回调方法 用来返回数据
public interface SpView {
void onRegistResult(boolean b);
void onReadResult(String res);
}
4.Activity类
负责将布局中数据传递给Presenter处理并处理返回数据
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements SpView {
private SpPresenter mSpPresenter = new SpPresenter(this);
private EditText mName;
private EditText mPwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mName = findViewById(R.id.et_sp_key);
mPwd = findViewById(R.id.et_sp_value);
}
public void save(View view) {
String name = mName.getText().toString().trim();
String pwd = mPwd.getText().toString().trim();
mSpPresenter.register(name, pwd, this);
}
public void read(View view) {
String name = mName.getText().toString().trim();
mSpPresenter.read(name, this);
}
@Override
public void onRegistResult(boolean b) {
Toast.makeText(this, "注册成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onReadResult(String res) {
if (res == null) {
Toast.makeText(this, "没有", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, res, Toast.LENGTH_SHORT).show();
}
}
}
简单的MVP设计模式