[译] Android MVP 架构必要知识:第三部分(Dialog,ViewPager,RecyclerView 以及 Adapters)

Android MVP 架构必要知识:第三部分(Dialog,ViewPager,RecyclerView 以及 Adapters)

Android MVP 架构系列文章的第1部分和第2部分自发布以来非常受欢迎,对此我感到很高兴。同时也因为你们的建议和贡献,项目优化得更好了。

在这个开发过程中,许多人询问过如何在这个架构中使用 Dialog 以及基于 Adapter 的视图。因此,我会在这篇博客中补充这两点。

如果你还没有阅读前面两篇博客,那么我会强烈建议在阅读本文之前阅读这两篇博客。下面是博客的链接地址:

在这篇文章中,我会添加一个评分对话框和 Feed 界面来扩展这个框架。

译者:Feed 指的是 RSS 订阅源,Feed 百科,下面的译文中我就直接使用 Feed 或者 RSS

上帝存在于细节之中

我们先看下效果图:

评分对话框
  1. 评分对话框显示 5 个星星,用户可以根据自己的满意度来选择星星的个数。
  2. 如果星星数量小于 5,我们将会修改对话框来显示一个反馈表单,用来询问用户的改进建议。
  3. 如果星星个数为 5。我们就在对话框中显示一个跳转到应用商城(这里指的是 google play)的选项。用户可以在那里进行评论。
  4. 评分信息会发送到应用的后台服务端。

注意:从用户的角度来看评分对话框并不是必须的,但是对我们开发者来说却很重要。所以,应用需要很巧妙地设计这个执行流程。

我建议把对话框里面相邻控件的间距调大点。

Feed 界面
  1. 这个界面会有两个子界面。
  2. 子界面 1:博客 RSS 的列表界面。
  3. 子界面 2:开源代码 RSS 的列表界面。
博客 RSS 子界面
  1. 从服务器获取数据。
  2. 用数据填充 RecyclerView 中的 CardView
开源项目 RSS 子界面
  1. 从服务器获取仓库数据。
  2. 这些仓库数据用来填充 RecyclerView 里面的 CardView

现在,我们明确了业务需求,接下来就是根据这些需求来扩展已有的架构。

我不会把整个代码片段都贴在这里,因为它太长了。而是在浏览器的新标签中打开这个 MVP 项目。后面我们就在这两个标签中来回切换。

概述:

添加以下几个类

(在项目com.mindorks.framework.mvp.ui.base 包里面查看代码 )

  1. BaseDialog:这个类里面我们添加 Dialog 的模板代码,以及一些通用的方法。实际项目用到的 Dialog 可以通过扩展该基类来实现。
  2. DialogMvpView:这个接口定义了 PresenterDialogs 交互的API。
  3. BaseViewHolder:它定义了 RecyclerView 绑定框架,并实现了 ViewHolder 被复用时自动清理视图的功能。
public abstract class BaseDialog extends DialogFragment implements DialogMvpView 

关于框架的一点说明。

所有相关的功能应该组合在一起,我称之为功能点的封装,使他们相互独立。

评分对话框:
  1. 可以通过左侧抽屉的菜单列表打开这个对话框。
  2. 它的实现和第二篇博客里面的 MVP 组件很相似。

在你浏览器的新标签中打开project repo,彻底研究评分对话框部分在项目中的实现

关于对话框的一点说明

有些应用可能会用到很多小对话框,对于这种情况我们可以创建通用的 mvpviewmvppresenterpresenter 给这些对话框使用。

Feed 部分:
  1. 这个包里面包含了 FeedActivity 和它的 MVP 组件,FeedPagerAdapterblog 包以及 opensource 包。
  2. blog: 这个包里面有 BlogFragment 和它的 MVP 组件以及 RecyclerViewBlogAdapter
  3. opensource: 这个包里面有 OpenSourceFragment 和它的 MVP 组件以及 RecyclerViewOpenSourceAdapter
  4. FragmentStatePagerAdapter 用于创建 BlogFragmentOpenSourceFragment

永远不要在任何 Adapter 类里面实例化任何对象,或者使用 new 操作符生成对象。请通过 dagger 注入来获取它们。

OpenSourceAdapterBlogAdapterRecyclerView.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 😃


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

本文转自 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、其他

……

图片

好啦,这份资料就给大家介绍到这了,*有需要详细文档的小伙伴可以点我下载~~~~*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值