Android MVP 架构系列文章的第1部分和第2部分自发布以来很是受欢迎,对此我感到很高兴。同时也由于大家的建议和贡献,项目优化得更好了。前端
在这个开发过程当中,许多人询问过如何在这个架构中使用 Dialog
以及基于 Adapter
的视图。所以,我会在这篇博客中补充这两点。java
若是你尚未阅读前面两篇博客,那么我会强烈建议在阅读本文以前阅读这两篇博客。下面是博客的连接地址:android
在这篇文章中,我会添加一个评分对话框和 Feed
界面来扩展这个框架。ios
译者:
Feed
指的是RSS
订阅源,Feed 百科,下面的译文中我就直接使用Feed
或者RSS
。git
上帝存在于细节之中github
咱们先看下效果图:编程
google play
)的选项。用户能够在那里进行评论。注意:从用户的角度来看评分对话框并非必须的,可是对咱们开发者来讲却很重要。因此,应用须要很巧妙地设计这个执行流程。后端
我建议把对话框里面相邻控件的间距调大点。浏览器
RSS
的列表界面。RSS
的列表界面。RSS
子界面RecyclerView
中的 CardView
。RSS
子界面RecyclerView
里面的 CardView
。如今,咱们明确了业务需求,接下来就是根据这些需求来扩展已有的架构。服务器
我不会把整个代码片断都贴在这里,由于它太长了。而是在浏览器的新标签中打开这个 MVP 项目。后面咱们就在这两个标签中来回切换。
概述:
添加如下几个类
(在项目的 com.mindorks.framework.mvp.ui.base 包里面查看代码 )
Dialog
的模板代码,以及一些通用的方法。实际项目用到的 Dialog
能够经过扩展该基类来实现。Presenter
与 Dialogs
交互的API。RecyclerView
绑定框架,并实现了 ViewHolder
被复用时自动清理视图的功能。public abstract class BaseDialog extends DialogFragment implements DialogMvpView 复制代码
关于框架的一点说明。
全部相关的功能应该组合在一块儿,我称之为功能点的封装,使他们相互独立。
MVP
组件很类似。在你浏览器的新标签中打开project repo,完全研究评分对话框部分在项目中的实现
关于对话框的一点说明
有些应用可能会用到不少小对话框,对于这种状况咱们能够建立通用的
mvpview
,mvppresenter
和presenter
给这些对话框使用。
FeedActivity
和它的 MVP
组件,FeedPagerAdapter
,blog
包以及 opensource
包。BlogFragment
和它的 MVP
组件以及 RecyclerView
的 BlogAdapter
。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、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。