Mvp实现登陆注册

来源:互联网 发布:淘宝雷蛇专卖店 编辑:程序博客网 时间:2024/06/03 05:07

Bean层

package com.example.day1mvp.bean;public class UserInfo {    private String name;    private String pass;    public UserInfo(String name, String pass) {        this.name = name;        this.pass = pass;    }    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层

package com.example.day1mvp.model;import com.example.day1mvp.bean.UserInfo;public interface IUserLoginModel {    public void login(String name, String pass);    public void saveUserInfo(String name, String pass);    public UserInfo getUserInfo();}
package com.example.day1mvp.model;import android.content.Context;import android.content.SharedPreferences;import com.example.day1mvp.bean.UserInfo;import com.example.day1mvp.net.NetUtils;public class UserLoginModel implements IUserLoginModel{    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;    }}

presenter层

package com.example.day1mvp.presenter;import android.content.Context;import android.content.SharedPreferences;import android.os.AsyncTask;import android.os.SystemClock;import android.widget.Toast;import com.example.day1mvp.bean.UserInfo;import com.example.day1mvp.model.IUserLoginModel;import com.example.day1mvp.model.UserLoginModel;import com.example.day1mvp.view.IUserLoginView;public class LoginPresenter {    IUserLoginModel model;    IUserLoginView view;    Context context;    SharedPreferences sp;    public LoginPresenter(IUserLoginView view, Context context) {        this.view = view;        this.context = context;        model = new UserLoginModel(context);    }    public void showUserInfo(){        UserInfo info = model.getUserInfo();        view.setTextName(info.getName());        view.setTextPass(info.getPass());    }    public void savaUserInfo(){        final String name = view.getTextName();        final String pass = view.getTextPass();        //        model.saveUserInfo(name, pass);    }    public void login(){        final String name = view.getTextName();        final String pass = view.getTextPass();        if(!name.equals("123")){                Toast.makeText(context, "鐢ㄦ埛鍚嶉敊璇?, Toast.LENGTH_SHORT).show();                return;        }        new AsyncTask<String, String ,String >(){            @Override            protected String doInBackground(String... params) {                model.login(name, pass);                return null;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                model.saveUserInfo(name, pass);                Toast.makeText(context, "鐧诲綍鎴愬姛", Toast.LENGTH_SHORT).show();            }        }.execute();    }}

view层

package com.example.day1mvp.view;public interface IUserLoginView {    public void setTextName(String name);    public void setTextPass(String pass);    public String getTextName();    public String getTextPass();}

net工具

package com.example.day1mvp.net;import android.os.SystemClock;public class NetUtils {    public static void getNetData(){        SystemClock.sleep(2000);    }}

Mainactivity代码

package com.example.day1mvp;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.day1mvp.presenter.LoginPresenter;import com.example.day1mvp.view.IUserLoginView;public class MainActivity extends AppCompatActivity implements IUserLoginView{    Button btn;    EditText et_name, et_pass;    LoginPresenter presenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn = (Button) findViewById(R.id.btn);        et_name = (EditText) findViewById(R.id.et_name);        et_pass = (EditText) findViewById(R.id.et_pass);//        IUserLoginView view = MainActivity.this;        presenter = new LoginPresenter(this, this);        presenter.showUserInfo();        btn.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                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();    }}

布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:orientation="vertical"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="match_parent" tools:context="com.example.day1mvp.MainActivity">    <EditText        android:id="@+id/et_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入用户名"/>    <EditText        android:id="@+id/et_pass"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入密码" />    <Button        android:id="@+id/btn"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="登陆"        /></LinearLayout>
原创粉丝点击