分包方式
需要的第三方依赖
Fragment
新建两个fragment
MainActivity
主页面布局
设置Fragment+tablayout的适配器
Fragment标签页结束
OKHttp网络请求
okhttputils工具类
package com.example.moni3.utils;
import com.google.gson.Gson;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
public class OkHttpUtils {
private static Gson gson = new Gson();
private static final String MEDIA_TYPE = "application/json; charset=utf-8";
private static final String METHOD_GET = "GET";
private static OkHttpClient okHttpClient;
public static OkHttpUtils okHttpUtils=new OkHttpUtils();
private OkHttpUtils(){}
public static OkHttpUtils init() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.readTimeout(3000, TimeUnit.MILLISECONDS);
builder.writeTimeout(3000, TimeUnit.MILLISECONDS);
builder.connectTimeout(3000, TimeUnit.MILLISECONDS);
okHttpClient = builder.build();
return okHttpUtils;
}
private static Request createRequest(String url, String method, BaseRequest baseRequest) {
Request.Builder builder = new Request.Builder().url(url);
Request request = builder.build();
return request;
}
public static void enqueueGet(String url, Callback callback) {
Request request = createRequest(url, METHOD_GET, null);
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
}
注意 需要创建一个BaseRequest实现Serializable
Application里面调用工具类里的初始化的方法
清单文件要写name
MVP
Model层调用网络请求
package com.example.moni3.mvp;
import com.example.moni3.bean.ShowBean;
import com.example.moni3.utils.OkHttpUtils;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.HttpUrl;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class ShowModel {
String url = "http://www.xieast.com/api/news/news.php";
public void show(final ShowCallBack showCallBack){
OkHttpUtils.enqueueGet(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//获取数据
String s = response.body().string();
Gson gson = new Gson();
ShowBean showBean = gson.fromJson(s,ShowBean.class);
List<ShowBean.DataBean> data = showBean.getData();
if(showBean.getCode() == 1){
showCallBack.onShowSuccess(data);
}else{
showCallBack.onShowFailure("展示失败");
}
}
});
}
}
View层
Presenter连接Model和View
package com.example.moni3.mvp;
import java.util.List;
public class ShowPresenter {
private ShowView showView;
private final ShowModel showModel;
public ShowPresenter(ShowView showView) {
this.showView = showView;
showModel = new ShowModel();
}
public void show(){
showModel.show(new ShowCallBack() {
@Override
public void onShowSuccess(List list) {
showView.showSuccess(list);
}
@Override
public void onShowFailure(String msg) {
showView.failSuccess(msg);
}
});
}
}
CallBack接口
在fragment中展示数据
调用presenter层
package com.example.moni3.frag;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.moni3.R;
import com.example.moni3.bean.ShowBean;
import com.example.moni3.mvp.ShowPresenter;
import com.example.moni3.mvp.ShowView;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class HomeFragment extends Fragment implements ShowView {
private ShowPresenter showPresenter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
showPresenter = new ShowPresenter(this);
showPresenter.show();
return view;
}
@Override
public void showSuccess(final List<ShowBean.DataBean> list) {
Log.e("222222222222",""+list);
//查看当前线程
Log.e("222222222222",""+Thread.currentThread().getName());
//更换线程
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
//吐司显示
Toast.makeText(getActivity(),list.toString(),Toast.LENGTH_SHORT).show();
//下面展示数据(没写完)
}
});
}
@Override
public void failSuccess(String msg) {
}
}