简单实用mvp

View

package view.bw.com.weekend3;

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

import view.bw.com.persenter.LoginPersenter;

public class MainActivity extends AppCompatActivity implements IMainActivity {

    /**
     * 请输入电话号
     */
    private EditText mEtMobile;
    /**
     * 请输入密码
     */
    private EditText mEtPass;
    private LoginPersenter loginPersenter;

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

    private void initView() {
        mEtMobile = (EditText) findViewById(R.id.et_mobile);
        mEtPass = (EditText) findViewById(R.id.et_pass);
        loginPersenter = new LoginPersenter(this);
    }

    public void btn_login(View view){
        String mobile = mEtMobile.getText().toString();
        String password = mEtPass.getText().toString();
        loginPersenter.login(mobile,password);

    }

    public void btn_register(View view){

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

    @Override
    public void onSuccess(Object o) {
        String result = o.toString();
        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        intent.putExtra("result",result);
        startActivity(intent);
    }


}

package view.bw.com.weekend3;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface IMainActivity  {
    void onFailed(String str);
    void onSuccess(Object o);
}

Persenter

package view.bw.com.persenter;

import com.google.gson.Gson;

import view.bw.com.bean.SupperClass;
import view.bw.com.model.ILoginModel;
import view.bw.com.model.LoginModel;
import view.bw.com.weekend3.IMainActivity;

/**
 * Created by lenovo on 2018/1/6.
 */

public class LoginPersenter implements ILoginPersenter {

    IMainActivity iMainActivity;
    ILoginModel loginModel;

    public LoginPersenter(IMainActivity iMainActivity) {
        this.iMainActivity = iMainActivity;
        loginModel = new LoginModel();
    }

    @Override
    public void login(String mobile, String password) {
        loginModel.login(mobile,password,this);
    }

    @Override
    public void onFailed(String str) {
        if (null==iMainActivity){
            return;
        }
        iMainActivity.onFailed(str);
    }

    @Override
    public void onSuccess(Object o) {
        if (null==iMainActivity){
            return;
        }
       String result = o.toString();

        Gson g = new Gson();
        SupperClass supperClass = g.fromJson(result, SupperClass.class);
        String code = supperClass.getCode();
        if (code.equals("0")){
            iMainActivity.onSuccess(result);
        }else{
            iMainActivity.onFailed(supperClass.getMsg());
        }


    }

    @Override
    public void onDestory() {
        if (null!=iMainActivity){
            iMainActivity = null;
        }
    }
}
 
package view.bw.com.persenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface ILoginPersenter {

    void login(String mobile,String password);
    void onFailed(String str);
    void onSuccess(Object o);

    void onDestory();
}

 
Model
 
package view.bw.com.model;

import android.os.Handler;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import view.bw.com.bean.ChangLiang;
import view.bw.com.persenter.ILoginPersenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public class LoginModel implements ILoginModel{
    private Handler handler = new Handler();
    @Override
    public void login(String mobile, String password, final ILoginPersenter iLoginPersenter) {
        String url = ChangLiang.LOGIN_URL+"?mobile="+mobile+"&password="+password;

        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .get()
                .url(url)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenter.onFailed(e.getMessage());
                    }
                });
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String result = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        iLoginPersenter.onSuccess(result);
                    }
                });
            }
        });
    }
}
package view.bw.com.model;

import view.bw.com.persenter.ILoginPersenter;

/**
 * Created by lenovo on 2018/1/6.
 */

public interface ILoginModel {

    void login(String mobile, String password, ILoginPersenter iLoginPersenter);
}

最后别忘了加网络访问的权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值