Mvp实现登录注册

注册的Activity

public class MainActivity extends AppCompatActivity implements NewsView{

    EditText et_my1;
    EditText et_my2;
    Button bt_my;
    Button bt_my2;
    private NewsPS newsPS;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        et_my1= (EditText) findViewById(R.id.et_my1);
        et_my2 = (EditText) findViewById(R.id.et_my2);
        bt_my = (Button) findViewById(R.id.bt_my);
        bt_my2 = (Button) findViewById(R.id.bt_my2);
        newsPS = new NewsPS(this);
        bt_my.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (newsPS!=null){
                    newsPS.LoginTrueP(MainActivity.this,et_my1.getText().toString(),
                            et_my2.getText().toString()
                            );
                }
            }
        });
        bt_my2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,DengLuYeMian.class);
                startActivity(intent);
            }
        });
    }



    @Override
    public void LoginTrueS() {
           et_my1.setError("1");
    }

    @Override
    public void LoginFalseS() {
        et_my2.setError("1");
    }

    @Override
    public void LoginTrue() {
        Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void LoginFalse() {

    }
}
布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    tools:context="com.zhangyongbo.mydenglu.MainActivity">
    <EditText
        android:id="@+id/et_my1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="账号"
        />
    <EditText
        android:id="@+id/et_my2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="密码"
        />
    <Button
        android:id="@+id/bt_my2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        />
        <Button
            android:id="@+id/bt_my"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="注册"

            />



</LinearLayout>

View层接口

注册的

public interface NewsView  {
    void LoginTrueS();
    void LoginFalseS();
    void LoginTrue();
    void LoginFalse();
}
登录的
public interface ViewDenglu {
    void LoginTrueS();
    void LoginFalseS();
    void LoginTrue();
    void LoginFalse();
}

总结口

public interface JieKoiHuiDiao  {
    void JieKoiHuiDiaoTrueS();//用于做判断
    void JieKoiHuiDiaoFalseS();//用于做判断
    void JieKoiHuiDiaoTrue();//用于传值
    void JieKoiHuiDiaoFalse();//用于传值
}
Modle层注册接口

public interface NewsMoudle  {
    //在接口里下两个方法到类里去实现接口并且实现方法
    void LoginFalse(Context context,String name,String paw);
    void LoginTrue(Context context,String name,String paw);
}
Modle层注册类数据请求

public class NewsMoudles implements   NewsMoudle {
    private JieKoiHuiDiao jieKoiHuiDiao;
     String url="http://120.27.23.105/user/reg";
    public NewsMoudles(JieKoiHuiDiao jieKoiHuiDiao) {
        this.jieKoiHuiDiao = jieKoiHuiDiao;
    }
    @Override
    public void LoginFalse(Context context, String name, String paw) {
        if (TextUtils.isEmpty(name)){
            jieKoiHuiDiao.JieKoiHuiDiaoTrueS();
        }
        if(TextUtils.isEmpty(paw)){
            jieKoiHuiDiao.JieKoiHuiDiaoFalseS();
        }
        LoginTrue(context,name,paw);
    }

    @Override
    public void LoginTrue(final Context context, String name, String paw) {
        Map<String,String> LoginMap = new HashMap<>();
        LoginMap.put("mobile",name);
        LoginMap.put("password",paw);
        OkHttp3Utils.doPost(url, LoginMap, new GsonObjectCallback<NewsBean>() {
            @Override
            public void onUi(NewsBean newsBean) {
                if (newsBean.getCode().equals("0")){
                    jieKoiHuiDiao.JieKoiHuiDiaoTrue();
                    Toast.makeText(context, "乘法", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onFailed(Call call, IOException e) {

            }
        });
    }
}
Presenter层注册接口

public interface NewsP {
    void LoginTrueP(Context context,String name,String paw);
}
Presenter注册类

public class NewsPS implements  NewsP , JieKoiHuiDiao{
    private NewsView newsView;
    private final NewsMoudle moudle;

    public NewsPS(NewsView newsView) {
        this.newsView = newsView;
        moudle = new NewsMoudles(this);
    }

    @Override
    public void LoginTrueP(Context context, String name, String paw) {
        moudle.LoginFalse(context,name,paw);
    }

    @Override
    public void JieKoiHuiDiaoTrueS() {
        if (newsView!=null){
            newsView.LoginTrueS();
        }

    }

    @Override
    public void JieKoiHuiDiaoFalseS() {
        if (newsView!=null){
            newsView.LoginFalseS();
        }
    }

    @Override
    public void JieKoiHuiDiaoTrue() {
        if (newsView!=null){
            newsView.LoginTrue();
        }
    }

    @Override
    public void JieKoiHuiDiaoFalse() {
        if (newsView!=null){
            newsView.LoginFalse();
        }
    }
}
登录的Activity
public class DengLuYeMian extends Activity implements ViewDenglu{
    EditText et_dL1;
    EditText et_dL2;
    Button but_bl;
    private NewsPdls newsPdls;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.denglu);
        et_dL1 = findViewById(R.id.et_dL1);
        et_dL2 = findViewById(R.id.et_dL2);
        but_bl = findViewById(R.id.but_bl);
        newsPdls = new NewsPdls(this);
        but_bl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (newsPdls!=null){
                    newsPdls.LoginTrueP(DengLuYeMian.this,et_dL1.getText().toString(),et_dL2.getText().toString());
                
                }
            }
        });
    }

    @Override
    public void LoginTrueS() {
          et_dL1.setError("1");
    }

    @Override
    public void LoginFalseS() {
        et_dL2.setError("2");
    }

    @Override
    public void LoginTrue() {
        Toast.makeText(DengLuYeMian.this, "成功", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void LoginFalse() {
        Toast.makeText(DengLuYeMian.this, "失败", Toast.LENGTH_SHORT).show();
    }
}
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/et_dL1"
        android:textSize="15dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="账号"
        />
    <EditText
        android:id="@+id/et_dL2"
        android:textSize="15dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="密码"
        />
    <Button
        android:id="@+id/but_bl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="登录"
        />
</LinearLayout>
Modle层登录接口
public interface NewsdengluS {
    //在接口里下两个方法到类里去实现接口并且实现方法
    void LoginFalse(Context context, String name, String paw);
    void LoginTrue(Context context,String name,String paw);
}
Modle层登录类请求数据
public class NewsDnglu  implements NewsdengluS {
       private JieKoiHuiDiao jieKoiHuiDiao;
        String  is ="http://120.27.23.105/user/login";
    public NewsDnglu(JieKoiHuiDiao jieKoiHuiDiao) {
        this.jieKoiHuiDiao = jieKoiHuiDiao;
    }

    @Override
    public void LoginFalse(Context context, String name, String paw) {
            if (TextUtils.isEmpty(name)){
                jieKoiHuiDiao.JieKoiHuiDiaoTrueS();
            }
             if (TextUtils.isEmpty(paw)){
            jieKoiHuiDiao.JieKoiHuiDiaoFalseS();
         }
        LoginTrue(context,name,paw);
    }

    @Override
    public void LoginTrue(final Context context, String name, String paw) {
        Map<String,String> map = new HashMap<>();
        map.put("mobile",name);
        map.put("password",paw);
        OkHttp3Utils.doPost(is, map, new GsonObjectCallback<NewsDl>() {
            @Override
            public void onUi(NewsDl newsDl) {
                if (newsDl.getCode().equals("0")){
                    jieKoiHuiDiao.JieKoiHuiDiaoTrue();
                    Intent intent = new Intent(context, GeRenActivity.class);
                    intent.putExtra("name",newsDl.getData().getUsername());
                    context.startActivity(intent);
                }
            }

            @Override
            public void onFailed(Call call, IOException e) {

            }
        });
    }
}
Presenter层的登录接口
public interface NewsPDl {
    void LoginTrueP(Context context, String name, String paw);
}

Presenter层的登录类
public class NewsPdls implements  NewsPDl ,JieKoiHuiDiao{
     private ViewDenglu viewDenglu;
    private final NewsdengluS newsdengluS;

    public NewsPdls(ViewDenglu viewDenglu) {
        this.viewDenglu = viewDenglu;
        //多态
        newsdengluS = new NewsDnglu(this);
    }

    @Override
    public void LoginTrueP(Context context, String name, String paw) {
        newsdengluS.LoginFalse(context,name,paw);
    }

    @Override
    public void JieKoiHuiDiaoTrueS() {
            if (viewDenglu!=null){
                viewDenglu.LoginTrueS();
            }
    }

    @Override
    public void JieKoiHuiDiaoFalseS() {
        if (viewDenglu!=null){
            viewDenglu.LoginFalseS();
        }
    }

    @Override
    public void JieKoiHuiDiaoTrue() {
        if (viewDenglu!=null){
            viewDenglu.LoginTrue();
        }

    }

    @Override
    public void JieKoiHuiDiaoFalse() {
        if (viewDenglu!=null){
            viewDenglu.LoginFalse();
        }

    }
}
登录成功后跳转的页面
public class GeRenActivity extends AppCompatActivity {
  TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ge_ren);
        Intent intent = getIntent();
        String name = intent.getStringExtra("name");
        tv = (TextView) findViewById(R.id.tv);
        tv.setText(name);
    }
}
布局文件
<?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"
    tools:context="com.zhangyongbo.mydenglu.GeRenActivity">
  <TextView
      android:id="@+id/tv"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" />
</RelativeLayout>
下面是所用到的Bean包
注册的bean包
public class NewsBean {

    /**
     * msg : 天呢!用户名或密码不能为空
     * code : 1
     * data : {}
     */

    private String msg;
    private String code;
    private String data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}
登录的Bean包
public class NewsDl {

    /**
     * msg : 登录成功
     * code : 0
     * data : {"age":null,"appkey":"4a1c72e3c8593a53","appsecret":"9FCD2D1610DBB9F176024508997C6942","createtime":"2017-11-09T20:56:03","email":null,"gender":null,"icon":null,"mobile":"17600261322","money":null,"nickname":null,"password":"8F669074CAF5513351A2DE5CC22AC04C","token":"8FF97958783CDC48E70CE649E8A8A660","uid":1913,"username":"17600261322"}
     */

    private String msg;
    private String code;
    private DataBean data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * age : null
         * appkey : 4a1c72e3c8593a53
         * appsecret : 9FCD2D1610DBB9F176024508997C6942
         * createtime : 2017-11-09T20:56:03
         * email : null
         * gender : null
         * icon : null
         * mobile : 17600261322
         * money : null
         * nickname : null
         * password : 8F669074CAF5513351A2DE5CC22AC04C
         * token : 8FF97958783CDC48E70CE649E8A8A660
         * uid : 1913
         * username : 17600261322
         */

        private Object age;
        private String appkey;
        private String appsecret;
        private String createtime;
        private Object email;
        private Object gender;
        private Object icon;
        private String mobile;
        private Object money;
        private Object nickname;
        private String password;
        private String token;
        private int uid;
        private String username;

        public Object getAge() {
            return age;
        }

        public void setAge(Object age) {
            this.age = age;
        }

        public String getAppkey() {
            return appkey;
        }

        public void setAppkey(String appkey) {
            this.appkey = appkey;
        }

        public String getAppsecret() {
            return appsecret;
        }

        public void setAppsecret(String appsecret) {
            this.appsecret = appsecret;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public Object getEmail() {
            return email;
        }

        public void setEmail(Object email) {
            this.email = email;
        }

        public Object getGender() {
            return gender;
        }

        public void setGender(Object gender) {
            this.gender = gender;
        }

        public Object getIcon() {
            return icon;
        }

        public void setIcon(Object icon) {
            this.icon = icon;
        }

        public String getMobile() {
            return mobile;
        }

        public void setMobile(String mobile) {
            this.mobile = mobile;
        }

        public Object getMoney() {
            return money;
        }

        public void setMoney(Object money) {
            this.money = money;
        }

        public Object getNickname() {
            return nickname;
        }

        public void setNickname(Object nickname) {
            this.nickname = nickname;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getToken() {
            return token;
        }

        public void setToken(String token) {
            this.token = token;
        }

        public int getUid() {
            return uid;
        }

        public void setUid(int uid) {
            this.uid = uid;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }
    }
}

这里用到的是OkHttp请求数据那就需要自己封装了
这是用到的网络权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
这是用到的依赖
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.jakewharton:butterknife:7.0.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okio:okio:1.7.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile files('libs/gson-2.2.4.jar')
下面是把EdText输入框变成框框
android:background="@android:drawable/alert_light_frame"


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值