mvp okhttp

View层

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;

import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import bw.com.lx_zk1_mn4.R;
import bw.com.lx_zk1_mn4.adapter.MAdapter;
import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.contract.LogContract;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import bw.com.lx_zk1_mn4.presenter.LogPresenter;
import bw.com.lx_zk1_mn4.util.OkhttpUtil;

public class MainActivity extends AppCompatActivity implements LogContract.ILogView {

private RecyclerView rlv;
private Button button;
private int page=1;
private String api;
private MAdapter mAdapter;
private List<UserBean.DataBean> list;
private LogPresenter logPresenter;
private UserBean userBean;
private UserBean userBean1;
private MAdapter mAdapter1;

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

private void initData() {
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            HashMap<String,String> params = new HashMap<>();
            params.put("keywords","手机");
            params.put("page",page+"");
            logPresenter.login(params);

            rlv.setAdapter(mAdapter1);
            /*new OkhttpUtil().post(api, params, new OkhttpCallBack() {
                @Override
                public void onFile(String msg) {

                }

                @Override
                public void onSuccess(String result) {
                    setram2String(result);
                }
            });*/
           // new
        }


    });
}

private void setram2String(String result) {
    UserBean userBean = new Gson().fromJson(result, UserBean.class);
    if (userBean!=null){

        rlv.setAdapter(mAdapter1);
    }
}

private void initView() {
    button = findViewById(R.id.button);
    rlv = findViewById(R.id.rlv);
    logPresenter = new LogPresenter(this);
    api = new UserApi().api;
    list = new ArrayList<>();
    userBean = new UserBean();

    rlv.setLayoutManager(new LinearLayoutManager(this,1,false));
}

@Override
public void OnFail(String msg) {

}

@Override
public void OnSuccess(UserBean userBean) {

    mAdapter1 = new MAdapter(this,userBean.getData());

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
M层

import com.google.gson.Gson;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import bw.com.lx_zk1_mn4.net.RequestCallBack;
import bw.com.lx_zk1_mn4.util.OkhttpUtil;

扫描二维码关注公众号,回复: 4993369 查看本文章

public class LogModel {
public void login(HashMap<String, String> params, String api, final RequestCallBack requestCallBack){

    OkhttpUtil.getInstance().post(UserApi.api, params, new OkhttpCallBack() {
        @Override
        public void onFile(String msg) {
            requestCallBack.Fail("请求失败");
        }

        @Override
        public void onSuccess(String result) {
            UserBean userBean = stream2String(result);

            requestCallBack.Success(userBean);
        }
    });

}

private UserBean stream2String(String result) {
    UserBean userBean = new Gson().fromJson(result, UserBean.class);
    return userBean;
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
P层

;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.api.UserApi;
import bw.com.lx_zk1_mn4.contract.LogContract;
import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.model.LogModel;
import bw.com.lx_zk1_mn4.net.RequestCallBack;

public class LogPresenter implements LogContract.ILogPerson{

private final LogModel logModel;
private final LogContract.ILogView iLogView;
public LogPresenter(LogContract.ILogView iLogView){
    logModel = new LogModel();
    this.iLogView = iLogView;

}

@Override
public void login(HashMap<String, String> params) {
          logModel.login(params,UserApi.api, new RequestCallBack() {
              @Override
              public void Fail(String msg) {

              }

              @Override
              public void Success(UserBean userBean) {
                    if (iLogView!=null){
                       iLogView.OnSuccess(userBean);
                    }
              }
          });
}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import android.os.Handler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import bw.com.lx_zk1_mn4.net.OkhttpCallBack;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

public class OkhttpUtil {
private static OkhttpUtil instance;
private final OkHttpClient okHttpClient;
Handler handler = new Handler();

private OkhttpUtil() {
    /*HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
     httpLoggingInterceptor.setLevel(httpLoggingInterceptor.getLevel().BODY);*/
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(httpLoggingInterceptor.getLevel());
    okHttpClient = new OkHttpClient
            .Builder()
            .addInterceptor(httpLoggingInterceptor)
            .connectTimeout(5, TimeUnit.SECONDS)
            .readTimeout(5, TimeUnit.SECONDS)
            .connectTimeout(5, TimeUnit.SECONDS)
            .build();

}

public static OkhttpUtil getInstance() {
    if (instance==null){
        synchronized (OkhttpUtil.class){
            if (instance==null){
                instance = new OkhttpUtil();
            }
        }
    }
    return instance;
}
public void post(String api, HashMap<String,String> params, final OkhttpCallBack callBack){
    FormBody.Builder forBody = new FormBody.Builder();
    for (Map.Entry<String, String> p : params.entrySet()) {
        forBody.add(p.getKey(),p.getValue());
    }
    FormBody build = forBody.build();
    final Request request = new Request
            .Builder()
            .url(api)
            .post(build)
            .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(final Call call, IOException e) {
            if (callBack!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                            callBack.onFile("请求失败");
                    }
                });
            }
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();

            if (callBack!=null){
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callBack.onSuccess(string);
                    }
                });
            }
        }
    });
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
}

OkhttpCallBack
1
public interface OkhttpCallBack {
void onFile(String msg);
void onSuccess(String result);
}


RequestCallBack

1
2
3
import bw.com.lx_zk1_mn4.entity.UserBean;

public interface RequestCallBack {
void Fail(String msg);

void Success(UserBean userBean);
1
}


二次封装

1
2
3
package bw.com.lx_zk1_mn4.contract;

import java.util.HashMap;

import bw.com.lx_zk1_mn4.entity.UserBean;
import bw.com.lx_zk1_mn4.net.RequestCallBack;

public interface LogContract {
public abstract interface ILogPerson{
public abstract void login(HashMap<String,String> params);
}
public interface ILogModel{
void setokhttp(HashMap<String,String> params, String string, RequestCallBack requestCallBack);
}
public interface ILogView{
void OnFail(String msg);
void OnSuccess(UserBean userBean);
}

}

猜你喜欢

转载自blog.csdn.net/weixin_44022413/article/details/85592526