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、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。