// 首先写Model层public interface ILoginModel {
public void login(String num, String pass, Callback callback);
public void save(String num,String pass);
public void zhuce(String num,String pass,Callback callback);
public User show();
}// 然后实现Model接口的类public class LoginModel implements ILoginModel {
Context context;
SharedPreferences sp;
SharedPreferences.Editor editor;
String code ="";
public LoginModel(Context context) {
this.context = context;
sp = context.getSharedPreferences("data",Context.MODE_PRIVATE);
editor = sp.edit();
}
@Override
public void login(String num, String pass, okhttp3.Callback callback) {
OkHttpUtils.getInstance().doGet("http://????/user/login?mobile="+num+"&password="+pass,callback);
}
@Override
public void save(String num, String pass) {
editor.putString("num",num);
editor.putString("pass",pass);
editor.commit();
}
@Override
public void zhuce(String num, String pass, okhttp3.Callback callback) {
OkHttpUtils.getInstance().doGet("http://???/user/reg?mobile="+num+"&password="+pass,callback);
}
@Override
public User show() {
String num = sp.getString("num", "");
String pass = sp.getString("pass", "");
boolean flag = sp.getBoolean("flag", false);
User user = new User(num,pass);
return user;
}
}//===接下来写View层
public interface ILoginView {
public void setNum(String num);
public String getNum();
public void setPass(String pass);
public String getPass();
}
// ==== 接下来写persenter层
public class LoginPersenter {
ILoginModel model;
ILoginView view;
Context context;
public LoginPersenter(ILoginView view, Context context) {
this.view = view;
this.context = context;
model = new LoginModel(context);
}
public void login(){
final String num = view.getNum();
final String pass = view.getPass();
model.login(num, pass, new OnUiCallback() {
@Override
public void onFailed(Call call, IOException e) {
}
@Override
public void onSuccess(String result) throws IOException {
Gson gson = new Gson();
Login2 login2 = gson.fromJson(result, Login2.class);
String code = login2.getCode();
if(code.equals("1")){
Toast.makeText(context,login2.getMsg(),Toast.LENGTH_SHORT).show();
return;
}else{
if(code.equals("0")){
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("num",num);
intent.putExtra("pass",pass);
context.startActivity(intent);
}
}
}
});
}
public void zhuce(){
String num = view.getNum();
String pass = view.getPass();
User user = model.show();
String sp_num = user.getNum();
String sp_pass = user.getPass();
if(num.length() == 11 && pass.length() >=6){
model.zhuce(num, pass, new OnUiCallback() {
@Override
public void onFailed(Call call, IOException e) {
}
@Override
public void onSuccess(String result) throws IOException {
Gson gson = new Gson();
Login login = gson.fromJson(result, Login.class);
if(login.getCode().equals("1")){
Toast.makeText(context,"注册失败",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(context,"注册成功",Toast.LENGTH_SHORT).show();
}
}
});
}else{
Toast.makeText(context,"已被注册",Toast.LENGTH_SHORT).show();
}
}
public void show(){
User user = model.show();
String num = view.getNum();
String pass = view.getPass();
}
}// =====
下面是Activity
public class LoginActivity extends AppCompatActivity implements ILoginView{
EditText num_,pass_;
Button btn_login,btn_zhuce;
LoginPersenter persenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initView();
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
persenter.login();
}
});
btn_zhuce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
persenter.zhuce();
}
});
}
private void initView() {
num_= (EditText) findViewById(R.id.num);
pass_= (EditText) findViewById(R.id.pass);
btn_login= (Button) findViewById(R.id.btn_login);
btn_zhuce= (Button) findViewById(R.id.btn_zhuce);
persenter = new LoginPersenter((ILoginView) this,this);
}
@Override
public void setNum(String num) {
num_.setText(num);
}
@Override
public String getNum() {
return num_.getText().toString();
}
@Override
public void setPass(String pass) {
pass_.setText(pass);
}
@Override
public String getPass() {
return pass_.getText().toString();
}
}
本文详细介绍了一个基于MVC架构的登录模块实现过程,包括Model层的数据处理、View层的界面展示及Presenter层的业务逻辑控制,并通过具体代码示例展示了各层间的交互方式。
2267

被折叠的 条评论
为什么被折叠?



