Fragment标签页+OKHttp网络请求数据+MVP模式
分包方式
需要的第三方依赖
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() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic 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() {@Overridepublic void onShowSuccess(List list) {showView.showSuccess(list);}@Overridepublic 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;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentView view = inflater.inflate(R.layout.fragment_home, container, false);showPresenter = new ShowPresenter(this);showPresenter.show();return view;}@Overridepublic void showSuccess(final List<ShowBean.DataBean> list) {Log.e("222222222222",""+list);//查看当前线程Log.e("222222222222",""+Thread.currentThread().getName());//更换线程getActivity().runOnUiThread(new Runnable() {@Overridepublic void run() {//吐司显示Toast.makeText(getActivity(),list.toString(),Toast.LENGTH_SHORT).show();//下面展示数据(没写完)}});}@Overridepublic void failSuccess(String msg) {}
}
Fragment标签页+OKHttp网络请求数据+MVP模式相关推荐
- Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)
如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来.OkHttp也提供了一个网络拦截器okhttp-l ...
- Android okHttp网络请求之缓存控制Cache-Control
前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...
- 网络请求数据demo
主类 package com.bwie.yuekaoa; import android.os.AsyncTask; import android.support.v7.app.AppCompatAct ...
- Android 开发之Okhttp网络请求日志打印
这里写自定义目录标题 Android 开发之Okhttp 网络请求日志打印 OkHTTP网络日志打印 Android 开发之Okhttp 网络请求日志打印 网络请求是开发的日常工作内容之一,网络日志打 ...
- vue 生命周期 返回不触发_Vue生命周期activated之返回上一页不重新请求数据操作...
activated: 英文原意:使活动.触发 在Vue的生命周期函数中,这个好像用的不是特别多?(也许只是在我的工作中这个用的不多,或者说叫几乎不用这个) 一.需求 前不久在项目中有这样一个需求: 在 ...
- 『Android』网络请求数据与JSON解析
『Android』网络请求数据与JSON解析
- 仿饿了吗点餐系统,mvp+okhttp+网络请求+recycleview
** 效果图 **. AndroidManifest.xml 继承了Application,所以一定要配置 <uses-permission android:name="android ...
- 仿探探:网络请求数据将卡片进行左滑右滑
MVP+Retrofit+RxJava进行网络数据的请求,Fresco进行图片的显示实现探探的左滑右滑效果. 先看一下效果 再看一下依赖 implementation project(':librar ...
- java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
Retrofit介绍: Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比 ...
最新文章
- 用pcl读ply文件_PCL之轨迹绘制(二)
- 前端白屏问题_前端优化-如何计算白屏和首屏时间
- What happens when clicking interaction record work center?
- SQL转化为MapReduce的过程
- NYOJ-子串和(dp)
- SQLite基础知识学习
- java面试题整理_2018年最新java面试题整理。。。持续更新中。。。
- WinForm实现SQLServer存储图片
- springMVC简介
- 一些忘记了的....
- js--京东快递单号查询案例
- 准考证丢失后如何查询四六级成绩
- 三星j7出现android,三星J7配置曝光 配骁龙625/运行安卓7.0
- element ui el-table单元格按需合并
- TI芯片(335x、437x、572x)uboot设置logo居中
- 本地缓存之王-Caffeine
- 目前最好用的云电脑排行有哪些?免费阿里云无影云电脑
- 国产服务器芯片厂商排名,x86服务器国内厂家(国产服务器厂商排名)
- 10-1-2 数据结构与算法高级(下)
- 上网和IPTV单线复用的方法
热门文章
- asteroids模板 游戏 java_在高级Java游戏中存储全局/静态变量的最佳方法是什么?...
- Exchange Server 2016 独立部署/共存部署 (八)—— 边缘角色服务器
- Windows Server 2016-管理Active Directory复制任务
- Json学习总结(3)——Jsonp跨域及Rest接口实现
- .git目录文件过大
- MySQL 在指定位置新增字段
- C#与Java之比较
- CString Format 乱码问题
- 阿里巴巴十周年庆(预告)
- 从趣味游戏到排序算法(2)