MVP登录案例

view层接口IView

package com.example.loagin.view.view;

public interface IView<T> {
void success(T data);
void fail(String msg);
}

view的Activity中的登录的MvpOneActivity

package com.example.loagin.view.view;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.loagin.R;
import com.example.loagin.view.model.Bean;
import com.example.loagin.view.model.UserBean;
import com.example.loagin.view.presenter.LoaginPresenter;

public class MvpOneActivity extends AppCompatActivity implements View.OnClickListener,IView {
     EditText username,password;
     LoaginPresenter mloaginPresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mvp_one);
        initView();
        initPrensenter();
    }

    private void initPrensenter() {
    mloaginPresenter = new LoaginPresenter(this);
}

private void initView() {
  username = findViewById(R.id.username);
  password = findViewById(R.id.password);
  password.invalidate();
  findViewById(R.id.login).setOnClickListener(this);
  findViewById(R.id.zhuce).setOnClickListener(this);
}

@Override
public void onClick(View v) {
      int id = v.getId();
      switch (id){
          case R.id.login:
              Bean bean = new Bean(username.getText().toString(),password.getText().toString());
              mloaginPresenter.denglu(bean);
              break;
          case R.id.zhuce:
              Intent intent = new Intent(MvpOneActivity.this,MvpTwoActivity.class);
              startActivity(intent);
              break;
              default:
                  break;
      }
}

@Override
public void success(Object data) {
    Intent intent  = new Intent(MvpOneActivity.this,LoaginActivity.class);
    startActivity(intent);
}

@Override
public void fail(String msg) {
    Toast.makeText(MvpOneActivity.this,msg,Toast.LENGTH_SHORT).show();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mloaginPresenter=null;
}
}

view的Activity中的注册的MvpTwoActivity

   package com.example.loagin.view.view;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.example.loagin.R;
import com.example.loagin.view.model.Bean;
import com.example.loagin.view.presenter.LoaginPresenter;

public class MvpTwoActivity extends AppCompatActivity implements View.OnClickListener,IView {
    EditText name,psw;
    LoaginPresenter mloaginPresenter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mvp_two);
        initView();
        mloaginPresenter = new LoaginPresenter(this);
    }

    private void initView() {
        name = findViewById(R.id.name);
        psw  = findViewById(R.id.psw);
        findViewById(R.id.reg).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        switch (id){
            case R.id.reg:
                Bean bean = new Bean(name.getText().toString(),psw.getText().toString());
                 mloaginPresenter.zhuce(bean);
                 break;
                 default:
                     break;
        }
    }

    @Override
    public void success(Object data) {
        Intent intent = new Intent(this,MvpOneActivity.class);
        startActivity(intent);
    }

    @Override
    public void fail(String msg) {
        Toast.makeText(MvpTwoActivity.this,msg,Toast.LENGTH_SHORT).show();
    }
}

view的Activity中的登陆成功的LoaginActivity

   package com.example.loagin.view.view;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.example.loagin.R;

public class LoaginActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loagin);
    }
}

presenter的类

  package com.example.loagin.view.presenter;

import android.text.TextUtils;

import com.example.loagin.view.model.Bean;
import com.example.loagin.view.model.NetUtil;
import com.example.loagin.view.model.UserBean;
import com.example.loagin.view.view.IView;

public class LoaginPresenter {
    private String loginUrl="http://120.27.23.105/user/login?mobile=%s&password=%s";
    private String zhuceUrl="http://120.27.23.105/user/reg?mobile=%s&password=%s";
    IView mIview;

    public LoaginPresenter(IView view){
      mIview=view;

    }
    //登录

     public void denglu(Bean bean){
        NetUtil.getData(String.format(loginUrl, bean.getUsername(), bean.getPassword()), UserBean.class, new NetUtil.CallBack<UserBean>() {
            @Override
            public void onSuccess(UserBean cc) {
                if (cc.getMsg().equals("登录成功")){
                    mIview.success("");
                }
                else {
                    mIview.fail("登录失败");
                }
            }
        });

     }
     //注册
   public void zhuce(Bean bean){
        NetUtil.getData(String.format(zhuceUrl, bean.getUsername(), bean.getPassword()), UserBean.class, new NetUtil.CallBack<UserBean>() {
            @Override
            public void onSuccess(UserBean bean) {
                if (bean.getMsg().equals("注册成功")){
                     mIview.success("");
                }
                else {
                    mIview.fail("注册失败");
                }
            }
        });
   }
   public void des(){
        mIview=null;
   }

}

model中的工具类
网络请求的工具类

    	package com.example.loagin.view.model;

import android.annotation.SuppressLint;
import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetUtil {
    public interface  CallBack<T>{
        void onSuccess(T t);
    }
    @SuppressLint("StaticFieldLeak")
    public static void getData(String StrUlr, final Class clazz, final CallBack callBack){
        new AsyncTask<String, Void, Object>() {
            @Override
            protected Object doInBackground(String... strings) {
                return getData(strings[0],clazz);
            }

            @Override
            protected void onPostExecute(Object o) {
                callBack.onSuccess(o);
            }
        }.execute(StrUlr);
    }
    public static <T> T getData(String StrUrl,Class clazz){
        return (T) new Gson().fromJson(getData(StrUrl),clazz);
    }
    public static String getData(String strurl)  {
        try {
            URL url = new URL(strurl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            int responseCode = urlConnection.getResponseCode();
            if (responseCode==200){
                String result = stream2String(urlConnection.getInputStream());
                return result;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    public static String stream2String(InputStream is) throws IOException {
        StringBuilder stringBuilder = new StringBuilder();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        for (String tmp = br.readLine(); tmp!=null;tmp=br.readLine()){
            stringBuilder.append(tmp);
        }
        return stringBuilder.toString();
    }
}

userbean类

   package com.example.loagin.view.model;

public class UserBean  {

    String msg;


    public String getMsg() {

        return msg;
    }
}

Bean类

package com.example.loagin.view.model;

public class Bean {
    String username;
    String password;

    public Bean(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;	
    }

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

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值