Android MVP 架构必要知识:第三部分(Dialog,ViewPager,RecyclerView 以及 Adapters)
Android MVP 架构系列文章的第1部分和第2部分自发布以来非常受欢迎,对此我感到很高兴。同时也因为你们的建议和贡献,项目优化得更好了。
在这个开发过程中,许多人询问过如何在这个架构中使用 Dialog
以及基于 Adapter
的视图。因此,我会在这篇博客中补充这两点。
如果你还没有阅读前面两篇博客,那么我会强烈建议在阅读本文之前阅读这两篇博客。下面是博客的链接地址:
- [译] Android MVP 架构必要知识:第一部分
- [译] Android MVP 架构必要知识:第二部分
- MindorksOpenSource/android-mvp-architecture 仓库里面有实现该框架完整的示例代码
在这篇文章中,我会添加一个评分对话框和 Feed
界面来扩展这个框架。
译者:
Feed
指的是RSS
订阅源,Feed 百科,下面的译文中我就直接使用Feed
或者RSS
。
上帝存在于细节之中
我们先看下效果图:
评分对话框
- 评分对话框显示 5 个星星,用户可以根据自己的满意度来选择星星的个数。
- 如果星星数量小于 5,我们将会修改对话框来显示一个反馈表单,用来询问用户的改进建议。
- 如果星星个数为 5。我们就在对话框中显示一个跳转到应用商城(这里指的是
google play
)的选项。用户可以在那里进行评论。 - 评分信息会发送到应用的后台服务端。
注意:从用户的角度来看评分对话框并不是必须的,但是对我们开发者来说却很重要。所以,应用需要很巧妙地设计这个执行流程。
我建议把对话框里面相邻控件的间距调大点。
Feed 界面
- 这个界面会有两个子界面。
- 子界面 1:博客
RSS
的列表界面。 - 子界面 2:开源代码
RSS
的列表界面。
博客 RSS
子界面
- 从服务器获取数据。
- 用数据填充
RecyclerView
中的CardView
。
开源项目 RSS
子界面
- 从服务器获取仓库数据。
- 这些仓库数据用来填充
RecyclerView
里面的CardView
。
现在,我们明确了业务需求,接下来就是根据这些需求来扩展已有的架构。
我不会把整个代码片段都贴在这里,因为它太长了。而是在浏览器的新标签中打开这个 MVP 项目。后面我们就在这两个标签中来回切换。
概述:
添加以下几个类
(在项目的 com.mindorks.framework.mvp.ui.base 包里面查看代码 )
- BaseDialog:这个类里面我们添加
Dialog
的模板代码,以及一些通用的方法。实际项目用到的Dialog
可以通过扩展该基类来实现。 - DialogMvpView:这个接口定义了
Presenter
与Dialogs
交互的API。 - BaseViewHolder:它定义了
RecyclerView
绑定框架,并实现了ViewHolder
被复用时自动清理视图的功能。
public abstract class BaseDialog extends DialogFragment implements DialogMvpView
关于框架的一点说明。
所有相关的功能应该组合在一起,我称之为功能点的封装,使他们相互独立。
评分对话框:
- 可以通过左侧抽屉的菜单列表打开这个对话框。
- 它的实现和第二篇博客里面的
MVP
组件很相似。
在你浏览器的新标签中打开project repo,彻底研究评分对话框部分在项目中的实现
关于对话框的一点说明
有些应用可能会用到很多小对话框,对于这种情况我们可以创建通用的
mvpview
,mvppresenter
和presenter
给这些对话框使用。
Feed 部分:
- 这个包里面包含了
FeedActivity
和它的MVP
组件,FeedPagerAdapter
,blog
包以及opensource
包。 - blog: 这个包里面有
BlogFragment
和它的MVP
组件以及RecyclerView
的BlogAdapter
。 - opensource: 这个包里面有
OpenSourceFragment
和它的MVP
组件以及RecyclerView
的OpenSourceAdapter
。 FragmentStatePagerAdapter
用于创建BlogFragment
和OpenSourceFragment
。
永远不要在任何
Adapter
类里面实例化任何对象,或者使用new
操作符生成对象。请通过dagger
注入来获取它们。
OpenSourceAdapter
和 BlogAdapter
是 RecyclerView.Adapter<BaseViewHolder>
的实现类。在本项目中,当没有可用数据的时候会显示一个空视图。用户可以点击 RETRY
按钮来重新获取数据,并在获取到数据的时候删除该空视图。
API
数据分页和网络状态的处理就留给你作为练习。
现在请通过项目来研究代码,仔细研究XML中的布局以及如何通过代码操作视图。
如果您觉得有困难或需要任何帮助或改善,请在 Mindorks
社区提出你的问题:点击这里加入 Mindorks Android
社区,在这里我们可以相互学习。
感谢您阅读这篇文章,如果你觉得这篇文章对你有帮助,别忘了点下面的 ❤ 。这会帮助更多人从这篇文章中学到知识。
如果想获取更多编程知识,在 Medium 上关注我和 Mindorks,这样你就能在新文章发布的第一时间收到通知了。
Check out all the Mindorks best articles here.
你也可以通过 Twitter, Linkedin, Github, 和 Facebook 加我好友。
Coder’s Rock 😃
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。
本文转自 https://juejin.cn/post/6844903543195828231,如有侵权,请联系删除。# 最后
按照国际惯例,给大家分享一套十分好用的Android进阶资料:《全网最全Android开发笔记》。
整个笔记一共8大模块、729个知识点,3382页,66万字,可以说覆盖了当下Android开发最前沿的技术点,和阿里、腾讯、字节等等大厂面试看重的技术。
因为所包含的内容足够多,所以,这份笔记不仅仅可以用来当学习资料,还可以当工具书用。
如果你需要了解某个知识点,不管是Shift+F 搜索,还是按目录进行检索,都能用最快的速度找到你要的内容。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照整个知识体系编排的。
详细文档可以点我下载,记得点赞哦~
(一)架构师必备Java基础
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……
(二)设计思想解读开源框架
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
……
(三)360°全方位性能优化
1、设计思想与代码质量优化
2、程序性能优化
- 启动速度与执行效率优化
- 布局检测与优化
- 内存优化
- 耗电优化
- 网络传输与数据储存优化
- APK大小优化
3、开发效率优化
- 分布式版本控制系统Git
- 自动化构建系统Gradle
……
(四)Android框架体系架构
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析
……
(五)NDK模块开发
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
……
(六)Flutter学习进阶
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
……
(七)微信小程序开发
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
……
(八)kotlin从入门到精通
1、准备开始
2、基础
3、类和对象
4、函数和lambda表达式
5、其他
……
好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*