MVP继续封装
来源:互联网 发布:狸窝转换器mac版 编辑:程序博客网 时间:2024/06/03 06:21
建议先看前面的 http://blog.csdn.net/miao_crazy/article/details/53373568
废话不多说 直接上封装
监听封装
向服务器提交数据 包含成功 失败 两种情况 (目前项目里是这样的);
/** * Created by ${苗} on 2016/12/21. */public interface IBaseCommitListener { /** * 提交数据成功 */ void commitDataSuccess(); /** * 提交数据失败 * @param msg 错误信息 */ void commitDataFail(String msg);}
再来一个
这里封装了 请求数据失败相关的接口 恩 ,我的是列表界面 ; 获取数据成功的 LZ单独处理了 因为之前有的地方 处理了一些逻辑 也可以写在这个接口里 但是注意返回值 类型 为T 毕竟是base接口么!
/** * Created by ${苗} on 2016/12/20. * 自定义baseListener */public interface IBaseListener { /** 获取数据失败 * @param msg 错误信息 */ void getDataFailed(String msg); /** 连接超时 (预留) * @param msg 超时信息 */ void getDataTimeOut(String msg);}
在上一个封装 绞尽脑汁
/** * Created by ${苗} on 2016/12/20. * 自定义gson解析工具类 含返回码判断 泛型T 为bean类型 例如AppInfoBean */public class GsonUtil { /** * @param data 带解析数据 * @param type 数据bean * @param iBaseListener 基类接口 * @param <T> 返回数据泛型 * @return 返回T */ public static <T>T checkOutData(String data,Class<T> type, IBaseListener iBaseListener) { //请求成功 解析数据 T result = null; try { JSONObject jsonObject = new JSONObject(data); String code = jsonObject.getString("code"); switch (code) { case "S": Gson gson = new Gson(); result = gson.fromJson(jsonObject.getString("data"), type); break; case "F": //请求失败 iBaseListener.getDataFailed(jsonObject.getString("msg")); break; case "T": //预留 break; } } catch (Exception e) { e.printStackTrace(); iBaseListener.getDataFailed("解析失败"); } return result; } /** 提交数据 处理返回结果方法 * @param data * @param iBaseCommitListener */ public static void checkOutCommit(String data, IBaseCommitListener iBaseCommitListener) { try { JSONObject jsonObject = new JSONObject(data); String code = jsonObject.getString("code"); switch (code) { case "S": iBaseCommitListener.commitDataSuccess(); break; case "F": //请求失败 String msg = jsonObject.getString("msg"); iBaseCommitListener.commitDataFail(msg); break; case "T": //预留 break; } } catch (Exception e) { e.printStackTrace(); iBaseCommitListener.commitDataFail("解析失败"); } }}
这样的话 网络请求和处理就变的简单了
public class BackTripInfoModelImpl extends IBaseMoudel implements BackTripInfoContract.Moudel { private HttpUtil.HttpCallBack mHttpCallBack; @Override public void getDataFromNet(String url, Map<String, String> map, final OnLoadNewsListListener onLoadNewsListListener) { mHttpCallBack = new HttpUtil.HttpCallBack() { @Override public void onError(String meg) { onLoadNewsListListener.getDataFailed("网络连接失败!"); } @Override public void onSusscess(String data) { BackvehicleBean backvehicleBean = GsonUtil.checkOutData(data, BackvehicleBean.class, onLoadNewsListListener); onLoadNewsListListener.onSuccess(backvehicleBean.getList()); } }; httpUtil.postMap(url, map, mHttpCallBack); }}
onLoadNewsListListener接口 我也带上吧
/** * 公用列表接口 * Created by ${苗} * on 2016/11/22. */public interface OnLoadNewsListListener<T> extends IBaseListener{ /** * @param list 获取数据成功 拿到集合 */ void onSuccess(List<T> list);}
如果不清楚mvp设计模式的 建议先了解一下 大概30分钟左右 也就差不多了!
另外 lz最近才开始研究 mvp+rxjava+retrofit 有好的资源 记得分享给我 miao2012crazy@163.com 感激不尽!
服务器返回码 可能不同 自己换就行 返回数据格式也可能不同 自己换就行 包括数据处理 基本的注释 也都写在上面了 大家参考着用就行 !
盖楼不易 如果对你有用 给lz点个赞吧!
2 0
- MVP继续封装
- Simple的MVP封装
- 一级列表MVP封装
- mvp封装的OKhttp
- MVp封装RxJava+Retrofit
- kotlin封装MVP
- Android MVP架构简单封装
- MVP、泛型、Rxjava---简单封装
- MVP介绍以及优化封装
- MVP+Retrofit封装网络请求
- 登录注册搜索(封装mvp)
- Android Retrofit+RxJava+MVP封装
- Android MVP封装模拟登陆
- Retroit+rxjava2.0+mvp封装
- 基于OKhttp的MVP封装
- Java类的继续封装
- Android中使用MVP的简单封装
- retrofit-rxjava封装、mvp-retrofit-rxjava demo
- 从装饰设计模式角度学习JavaIO字节流
- 第6章 使用Linux环境变量
- android fragment与activity交互demo
- Android多级树形结构列表(理论上可以无限级)
- 交互设计师,你原来是这样的“线框仔”
- MVP继续封装
- JAVA设计模式之门面模式(外观模式)
- Java学习篇之JDBCUtils工具类
- Modbus协议学习
- 让canvas的高度自适应
- XML::Parser module installlibxml-simple-perl
- [Mapbox GL]添加实时数据
- Android手机及窗口管理
- 16.1 Swift可选类型深入探讨