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;
}
}