1.okhttp工具
public class OkHttpUtil {
private static final String METHOD_GET = "GET";
private static OkHttpClient client;
private static RequestBody body;
public OkHttpUtil() {
}
public static void init(){
client = new OkHttpClient.Builder()
.writeTimeout(3000,TimeUnit.MILLISECONDS)
.readTimeout(3000,TimeUnit.MILLISECONDS)
.build();
}
public static Request createRequest(String url,String method){
Request request=new Request.Builder().url(url).build();
switch (method){
case METHOD_GET:
body = request.body();
break;
}
return request;
}
public static void get(String url, Callback callback){
Request request = createRequest(url, METHOD_GET);
Call call = client.newCall(request);
call.enqueue(callback);
}
}
2.view层
public interface View {
void onSuccess(String result);
void onFail(String msg);
}
3.model层
public class Model {
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
public void model(String url, final HttpData data){
OkHttpUtil.get(url, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
final String s = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
data.Jk(s);
}
});
}
});
}
//创建接口
public interface HttpData{
void Jk(String xn);
}
}
4.persenter层
public class Persenter {
private Model model;
private View view;
public Persenter( View view) {
model=new Model();
this.view = view;
}
public void pers(String url){
model.model(url, new Model.HttpData() {
@Override
public void Jk(String xn) {
if(xn!=null){
view.onSuccess(xn);
}else{
view.onFail("数据失败");
}
}
});
}
}
4.主页面
public class FristFragment extends Fragment implements com.umeng.soexmple.yuekaocheng.view.View,TwoView {
private RecyclerView recyclerView;
private List<Htt.DataBean> list=new ArrayList<>();
private String path="http://www.xieast.com/api/news/news.php?page=1";
private String twopath="http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4";
private List<TwoUser.DataBean> list2=new ArrayList<>();
private RecyclerView twore;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_frist, container, false);
recyclerView = view.findViewById(R.id.recycler);
twore = view.findViewById(R.id.recyclertwo);
Persenter persenter=new Persenter(this);
persenter.pers(path);
TwoPersenter persenter1=new TwoPersenter(this);
persenter1.twomodel(path);
return view;
}
@Override
public void onSuccess(String result) {
Gson gson=new Gson();
Htt htt = gson.fromJson(result, Htt.class);
List<Htt.DataBean> data = htt.getData();
list.addAll(data);
GridLayoutManager gridLayoutManager=new GridLayoutManager(getContext(),4);
recyclerView.setLayoutManager(gridLayoutManager);
MyAdapter adapter=new MyAdapter(list,getContext());
recyclerView.setAdapter(adapter);
}
@Override
public void onFail(String msg) {
}
@Override
public void onDataSuccess(String cheng) {
Gson gson=new Gson();
TwoUser twoUser = gson.fromJson(cheng, TwoUser.class);
List<TwoUser.DataBean> data = twoUser.getData();
LinearLayoutManager manager=new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL,false);
twore.setLayoutManager(manager);
list2.addAll(data);
TwoAdapter adapter=new TwoAdapter(list,getContext());
twore.setAdapter(adapter);
}
@Override
public void onDataFail(String shi) {
}
}
5.初始化网路请求
6.设置网络权限