我正在嘗試遵循MVP模式。但是,我對如何處理這種模式下的適配器和視圖持有者存在一些疑問。適配器作爲演示者?或者與演示者交談? Android和MVP
我應該使用適配器作爲演示者嗎?擁有業務邏輯?
或者我應該傳遞一個處理列表邏輯的演示者實例,然後在與適配器元素髮生任何交互時調用演示者的方法?
謝謝
我正在嘗試遵循MVP模式。但是,我對如何處理這種模式下的適配器和視圖持有者存在一些疑問。適配器作爲演示者?或者與演示者交談? Android和MVP
我應該使用適配器作爲演示者嗎?擁有業務邏輯?
或者我應該傳遞一個處理列表邏輯的演示者實例,然後在與適配器元素髮生任何交互時調用演示者的方法?
謝謝
有一個在Android的
實施MVP要回答你的問題並沒有確切的/正確的定義,在我看來,Presenter
不應該有任何Android的邏輯。
這樣,Adapter
將是一個「View
」,那麼即演示者提供了它的數據(通過Activity
或Fragment
),它只是與如何呈現該交易。
我會做MVP如下。
模式 - POJO的,分析,存儲(SQLlite)和檢索數據(HTTP)。很顯然,我會將POJO的解析和數據庫邏輯分成子文件夾 - 但這一切都屬於我的模式。
查看 - Activity
,Fragment
,Adapters
- 活動&片段保持參照演示,讓他們要顯示的數據。如何顯示這些數據/信息,外觀+手感等在View
中處理。
演示 - 中間人,提供了邏輯到輸入即按鈕點擊,數據的檢索,輸入&驗證然後將結果傳遞迴視圖(Activity
或Fragment
)
這裏有MVP
一個偉大的文章,以下是MVP
的簡化 diagram回答這個question修改(也由我回答)
我認爲Android的看法適配器是純粹的V-範圍的東西,如果適配器是主持人 - 這些主持人是在視圖中實施內部某處。另外,演示者不應該包含業務邏輯,因爲他們只是M和V之間的中介。在我當前的基於MVP的項目中,演示者完全不知道列表適配器,因爲他們不應該在乎如何顯示something_的_list(例如,主持人只是告訴一個視圖:「以某種方式顯示路由」,並且只監聽一個視圖事件「onRouteSelected」,因爲路由可以從任何類型的小部件獲得,而不一定是列表)。 –
那麼,你有沒有參考適配器內的演示者?或者,您是否將偵聽器添加到適配器事件中,然後重定向到演示者?@LyubomyrShaydariv –
是的,第二種情況:適配器可以與託管視圖進行交互,然後一個特定視圖決定如何將事件轉換/委派給演示者(或演示者監聽器 - 取決於您如何分隔演示者和監聽器接口)。 –