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