利用主流开源库搭建mvp模式框架

网友投稿 590 2022-10-27

利用主流开源库搭建mvp模式框架

利用主流开源库搭建mvp模式框架

MVP框架

项目用的是MVP + RxJava + Dagger2 + Retrofit + okhttp

说明:

1)所有网络请求限制了不能在activity里面和Fragment里面发起,必须在MVP的presenter里面进行网络请 求这样便于管理MVP的View与presenter的代码 2)如果业务逻辑需要,一定要在Activity和Fragment里面发起网络请求,那么可以通过Application的 mAppComponent对象,获取data module的DataManager对象,调用网络请求的client

工程结构:

工程分为两个主要的moduleapp module:主工程模块(包含各种基类\MVP\工具类\自定义view) 基类: 普通Activity的基类 --> BaseActivity(这个基类里面限制了网络请求) 普通Fragment的基类 --> BaseFragment 封装了RecyclerView列表带上拉刷新下拉加载的Fragment基类 --> BaseRefreshRecyclerFragment 说明:封装的RecyclerView对象 --> mRecyclerView 封装的下拉刷新对象 --> mRefreshLayout 封装的Adapter对象 --> mAdapter 封装的LayoutManager对象 --> mLayoutManager MVP: 关联了MVP的Fragment基类 --> MVPFragmentView 说明:示例代码参考工程Zipfragment类 关联了MVP的Presenter基类 --> MVPFragmentPresenter 说明:示例代码参考工程ZipPresenter类

APP层:使用开源框架

data 层:使用开源框架

rxjava 核心Observable(被观察者)可以理解为事件的发送者 Observer(观察者)Observer可以理解为事件的接收者,就好像快递的接收者 Subscriber (订阅)Subscriber 绑定两者,请求接口和请求回来的数据 okhttp 用于网络请求 Retrofit 是把所有的网络请求封装起来 结合rxjava +okhttp + Retrofit com.facebook.stetho:stetho okhttp- 直接在浏览器抓包chrome://inspect 要翻墙或者-chrome inspect 离线调试-工具包 klog 用于日志输出类同 logger ,可查看具体打印位置,logger基于klog封装 LocalCache 文件,对象,等等等等

部分简单实用介绍

(其实里面还有好多巴多实用的没写出来/笑哭)

BaseMultiItemQuickAdapter 多类型的使用

RxJava+Retrofit 一次合并多个请求代码片段如下

@Override public void refresh(int menuVersion, int menuSid, int settingsId, int cityId, int provinceId) { //创建一个被观察者 Observable> zipObservable = getAppComponent().getDataManeger().getDataStore().getMsgV3(cityId,provinceId); Observable> testObservable = getAppComponent().getDataManeger().getDataStore().requestTestData( menuVersion, menuSid, settingsId); ObservablezipAndTestBeanObservable =zipObservable.zipWith(testObservable, new Func2, BaseBean, ZipAndTestBean>() { @Override public ZipAndTestBean call(BaseBean zipBeanBaseBean, BaseBean testBeanBaseBean) { ZipAndTestBean zipAndTestBean = new ZipAndTestBean(); zipAndTestBean.zipBean = zipBeanBaseBean.data; zipAndTestBean.testBean = testBeanBaseBean.data; return zipAndTestBean; } }); zipAndTestBeanObservable.compose(this.bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber() { @Override public void onCompleted() { mView.onFinishRefresh(); } @Override public void onError(Throwable e) { mView.onFinishError(); } @Override public void onNext(ZipAndTestBean zipAndTestBean) { zipList.clear(); testList.clear(); zipList.addAll(zipAndTestBean.zipBean.dataList); testList.addAll(zipAndTestBean.testBean.dataList); } }); }

rxbus 不同的fragment进行数据传递

多界面(如登录注册验证码, 设置之类)不用activity跳转,fragment自由切换 (上述都有支持)

自定义控件有

ExactRefreshLayout 准确度高的下拉刷新,手势只有在往下的时候才出现下拉的球 RecycleViewDivider RecycleView自定义分割线 横向,纵向,图片,颜色,都支持 SimpleToolbar 全局的toolbar,包括了,左边返回 中间标题,右边关闭,右边第二个图标 (具体还可拓展,根据自己需求来,里面跟多精彩巧妙设计,等待大家去自行发掘) Android进阶汇Q群:515769388 终于写完了,第一次正儿八经上传github,累死了,不过回头看看,再累也是值得滴~,别忘记点星星啊,虽然我不想出名,就是满足下我虚荣心 ,大家一起学习,共同进步(*^^*)嘻嘻__

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Retalk 是一个 Redux 框架,灵巧、轻量、而智慧
下一篇:算法训练 新生舞会
相关文章

 发表评论

暂时没有评论,来抢沙发吧~