MVP實現登錄註冊

1.BaseView
package com.example.zhou2.base;

public interface BaseView {
void ondatanull(String data);
}
2.CallBack接口
package com.example.zhou2;

public interface CallBack {
void onSuccess(String result);
void onFailer(String error);
}
3.LoginView
package com.example.zhou2.view;

import com.example.zhou2.base.BaseView;

public interface LoginView extends BaseView {
void onSuccess(String result);
void onFailer(String error);
}
4.LoginModel
package com.example.zhou2.model;

import android.os.AsyncTask;
import android.os.SystemClock;

import com.example.zhou2.CallBack;
import com.example.zhou2.bean.RootBean;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class LoginModel {

public void login(String mobile, String password, final CallBack callBack) {
    final String url = "http://www.zhaoapi.cn/user/login?mobile=" + mobile + "&password=" + password;

    new AsyncTask<String, Void, String>() {
        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url1 = new URL(url);
                HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(3000);
                int codase = connection.getResponseCode();
                if (codase == 200) {
                    InputStream inputStream = connection.getInputStream();
                    String s = CharStreams.toString(new InputStreamReader(inputStream,"utf-8"));
                    SystemClock.sleep(3000);
                    return s;

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            RootBean rootBean = gson.fromJson(s, RootBean.class);
            if (rootBean.getCode()==0) {
                callBack.onSuccess(s);
            } else {
                callBack.onFailer("登錄失敗");
            }

        }
    }.execute();

}

}
5.LoginPresenter
package com.example.zhou2.presenter;

import android.os.SystemClock;
import android.text.TextUtils;

import com.example.zhou2.CallBack;
import com.example.zhou2.model.LoginModel;
import com.example.zhou2.model.RisgisterModel;
import com.example.zhou2.view.LoginView;

public class LoginPresenter {
private LoginView loginView;
private LoginModel loginModel;
private RisgisterModel risgisterModel;
public LoginPresenter(LoginView loginView) {
this.loginView = loginView;
loginModel=new LoginModel();
risgisterModel= new RisgisterModel();
}
public void login(String mobile, String password){
if (TextUtils.isEmpty(mobile)&&TextUtils.isEmpty(password)){
loginView.ondatanull(“不能爲空”);
}
loginModel.login(mobile, password, new CallBack() {
@Override
public void onSuccess(String result) {
loginView.onSuccess(result);
}

        @Override
        public void onFailer(String error) {
            loginView.onFailer(error);
        }
    });
}
public void zhuce(String zname,String zpass){
    if (TextUtils.isEmpty(zname)&&TextUtils.isEmpty(zpass)){
        loginView.ondatanull("不能爲空");
    }
    risgisterModel.zhuce(zname,zpass, new CallBack() {
        @Override
        public void onSuccess(String result) {6.
            loginView.onSuccess(result);
        }

        @Override
        public void onFailer(String error) {
            loginView.onFailer(error);
        }
    });

}

}
6.MainActivity
package com.example.zhou2;

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

import com.example.zhou2.presenter.LoginPresenter;
import com.example.zhou2.view.LoginView;

public class MainActivity extends AppCompatActivity implements LoginView {

private EditText username;
private EditText password;
private Button login;
private TextView register;
private ProgressDialog progressDialog;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initListener();
    loginPresenter = new LoginPresenter(this);
}

private void initListener() {
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String name = username.getText().toString();
            String pass = password.getText().toString();
            loginPresenter.login(name,pass);
            progressDialog =ProgressDialog.show(MainActivity.this,"登錄","正在登錄");
        }
    });
    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this,RisgisterActivity.class));
        }
    });
}

private void initView() {
    username = findViewById(R.id.et_userName);
    password = findViewById(R.id.et_password);
    login = findViewById(R.id.login);
    register = findViewById(R.id.zhuce);
}

@Override
public void onSuccess(String result){
    //SystemClock.sleep(3000);
    startActivity(new Intent(MainActivity.this,Main2Activity.class));
}

@Override
public void onFailer(String error) {
    Toast.makeText(this, "用戶名或密碼錯誤", Toast.LENGTH_SHORT).show();
}

@Override
public void ondatanull(String data) {
    Toast.makeText(this, "不能爲空", Toast.LENGTH_SHORT).show();
}

}
7.RigisterModel
package com.example.zhou2.model;

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

import com.example.zhou2.CallBack;
import com.example.zhou2.bean.RootBean;
import com.google.common.io.CharStreams;
import com.google.gson.Gson;

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

public class RisgisterModel {
@SuppressLint(“StaticFieldLeak”)
public void zhuce(String name, String password, final CallBack callBack){
final String path = “http://www.zhaoapi.cn/user/reg?mobile="+name+"&password=”+password;
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String… strings) {
try {
URL url = new URL(path);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod(“GET”);
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.connect();
int code = urlConnection.getResponseCode();
if (code==200){
InputStream inputStream = urlConnection.getInputStream();
String str = CharStreams.toString(new InputStreamReader(inputStream,“utf-8”));
return str;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            RootBean rootBean = gson.fromJson(s, RootBean.class);
            if (rootBean.getCode()==0){
                callBack.onSuccess(s);
            }else {
                callBack.onFailer("失敗");
            }
        }
    }.execute();
}

}
8.RigisterActivity
package com.example.zhou2;

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

import com.example.zhou2.presenter.LoginPresenter;
import com.example.zhou2.view.LoginView;

public class RisgisterActivity extends AppCompatActivity implements LoginView {

private EditText name;
private EditText pass;
private Button zhuce;
private LoginPresenter loginPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_risgister);
    initView();
    initListener();
    loginPresenter = new LoginPresenter(this);
}

private void initListener() {
    zhuce.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String zname = name.getText().toString();
            String zpass = pass.getText().toString();
            loginPresenter.zhuce(zname,zpass);
        }
    });
}

private void initView() {
    name = findViewById(R.id.zc_userName);
    pass = findViewById(R.id.zc_password);
    zhuce = findViewById(R.id.zhuce);
}

@Override
public void onSuccess(String result) {
    startActivity(new Intent(this,Main2Activity.class));
}

@Override
public void onFailer(String error) {
    Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
}

@Override
public void ondatanull(String data) {
    Toast.makeText(this, "不能爲空", Toast.LENGTH_SHORT).show();
}

}
9.登錄佈局

<?xml version="1.0" encoding="utf-8"?>

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_userName"
    android:hint="賬號"
    />
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/et_password"
    android:hint="密碼"
    />
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/login"
    android:text="登錄"
    android:layout_gravity="center_horizontal"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="立即註冊"
    android:textColor="#de0000"
    android:id="@+id/zhuce"
    android:layout_gravity="center_horizontal"
    />
10.bean類 package com.example.zhou2.bean;

public class RootBean {
private String msg;
private int code;

public String getMsg() {
    return msg;
}

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

public int getCode() {
    return code;
}

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

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章