在MVVM pattern上,ViewModel包含業務邏輯並在需要更新時通知視圖。它也通過有關用戶事件的視圖通知。在Android上使用MVVM時,每個Activity應該有一個(且只有一個)ViewModel?
據我瞭解,每個模型應該有一個關聯的ViewModel。所以,如果我們有以下型號:
- 用戶
- 帳戶
我們將有以下的ViewModels:
- UserViewModel
- AccountViewModel
但是,我發現有關使用MVVM進行數據綁定的所有示例,都使用單個ViewModel進行佈局。最近,Google在Architecture Components中引入了ViewModel類。這使我相信的活動將有一個單一的視圖模型,將連接到所有相關型號:
用戶/客戶 - > ActivityViewModel
這變得更加複雜,如果我們認爲RecyclerView的。每個適配器項目可以是一個ViewModel本身,因此帶有RecyclerView的Activity將在列表中包含多個ViewModel,併爲剩餘的視圖內容(假設它們需要來自ViewModel的信息)添加一個主視圖。例如:
在這個例子中,我們有帳戶的ViewModels和一個UserViewModel的列表。這將如何嵌入到單個ActivityViewModel中?
經過更多的考慮,我同意每個模型都應該有自己的ViewModel。但是,我仍然很難有一個View for Model。該活動可能希望呈現多個模型的一部分,並且我們可以將單個視圖與多個ViewModel連接起來。 – fhsilva