2015-12-09 4 views
6

Próbuję postępować zgodnie ze schematem MVP. Mam jednak pewne wątpliwości dotyczące sposobu obsługi adapterów i uchwytów widoku na ten wzorzec.Adapter jako prezenter? Lub rozmawiać z prezenterem? Android i MVP

Czy powinienem używać adaptera jako prezentera? Posiadanie logiki biznesowej?

Czy powinienem przekazać wystąpienie prezentera, który obsługuje logikę listy, a następnie wywołuje metody prezentera w przypadku jakiejkolwiek interakcji z elementami adaptera?

Dziękuję

+0

myślę, że Android widok adaptery są czysto V zakres rzeczy, a jeśli są adaptery prezenterów - to prezenterzy są wewnętrzne gdzieś w implementacji widoku . Ponadto prezenterzy nie powinni zawierać logiki biznesowej, ponieważ są jedynie mediatorami pomiędzy literami M i V. W moim obecnym projekcie opartym na MVP prezenterowie nie są w ogóle świadomi kart listy, ponieważ nie powinni przejmować się wyświetlaniem listy __ rzeczy (np. prezenter zasugeruje widok: "wyświetlaj trasy w jakiś sposób" i po prostu słucha zdarzenia widoku "onRouteSelected", ponieważ trasa może być uzyskana z dowolnego rodzaju widżetów, niekoniecznie z listy). –

+1

Czy masz więc odniesienie do prezentera wewnątrz adaptera? Czy możesz dodać słuchaczy do zdarzeń adapterów, a następnie przekierować do [email protected] –

+0

Tak, drugi przypadek: adaptery mogą wchodzić w interakcje z widokami hostingu, a następnie konkretny widok decyduje o przekształceniu/delegowaniu zdarzenia do prezentera (lub prezentera-słuchacza - zależy od tego, w jaki sposób oddzielasz prezenterów od interfejsów słuchaczy). –

Odpowiedz

3

Nie ma dokładnej/poprawna definicja realizacji MVP w Androidzie

Aby odpowiedzieć na to pytanie, moim zdaniem Presenter nie powinny mieć żadnego Android logiki.

Jako taki, Adapter będzie „View” wtedy to Presenter Dostarcza dane (za pośrednictwem Activity lub Fragment) i to właśnie zajmuje się, jak przedstawić ten.

Zrobiłbym MVP w następujący sposób.

  1. model - POJO'S, przetwarzania, przechowywania (SQLlite) i pobierania danych (http). Oczywiście podzieliłem logikę POJO, parsowanie i DB na podkatalogi - ale to wszystko wpada w Model dla mnie.

  2. Zobacz - Activity, Fragment, Adapters - Działania & Fragment hold odniesienie do Presenter, który daje im danych do wyświetlenia. W jaki sposób te dane/wiadomości są wyświetlane, wygląd + styl itd., Są przetwarzane w View.

  3. Presenter - Bliski człowiek, zapewnia logikę do wejść czyli kliknięcia przycisku, odzyskiwanie danych, walidacja wejść & następnie przekazuje wynik z powrotem do widoku (Activity lub Fragment)

Oto wielki artykuł na MVP

oto uproszczony diagram z MVP

enter image description here

Odpowiedź modyfikowany ten question (odpowiedział również przeze mnie)