MVP w Androidzie - Presenter

Kliknij i wspomóż mnie :)

Android

Wstęp

Presenter jest ostatnim opisywanym przeze mnie elementem. Jest to fragment spajający widoki z dostępem do danych. Reaguje on na interakcje użytkownika oraz lifecycle.

Nie znasz MVP, albo nie widzisz różnicy pomiędzy MVP a MVC. Nie szkodzi ja też do niedawna nie widziałem. Więcej możesz poczytać tutaj:

MVC vs. MVP vs. MVVM on Android

Kod zaprezentowany w tym poście jest częścią mojej przykładowej aplikacji. Jej źródło znajdziesz tutaj:

MVPWithFirebase

Drugą część o dostępie do danych znajdziesz tutaj:

MVP w Androidzie - Model

Podstawa

Presenter przede wszystkim odpowiada za przechowywanie stanu widoku, na którym on operuje.

Zapewnia to, że nie będzie możliwe dostać NPE w przypadku kiedy nasz widok stanie się nieaktywny (np. onPause).

W tym celu istnieje klasa abstrakcyjna BasePresenter, która przechowuje stan View.

Dodatkowo funkcje onViewActive i onViewInactive mogą zmienić jego stan. Każda klasa presenter w moim przykładzie implementuje BasePresenter.

Struktura

Klasa Topics nie jest skomplikowana więc jej kontrakt także jest bardzo prosty.

W tym przykładzie TopicsPresenter musi implementować tylko funkcję getTopics.

Pobiera ona dane z klasy DataRepository i ze względu na rezultat zwraca listę lub błąd.

Wywołanie

Instancja presentera powinna zostać utworzona wraz ze wstrzykniętymi źródłami danych.

Aby nie dopuścić do odwoływania się do pustego obiektu. W View czyli tutaj TopicsFragment w metodach onResume() i onPause() powinniśmy aktywować i dezaktywować dostęp do widoku.

Cykl działania aplikacji

Na sam koniec wypada wytłumaczyć krok po kroku co się ze sobą komunikuje i w jaki sposób.

1. Klasa TopicsFragment zostaje uruchomiona z MainActivity

2. Tworzy instancję DataRepository i przekazuje jako parametr do TopicsPresenter

3. Tworzy instancję TopicsPresenter

4. Wywołuje na presenterze onViewActive

5. Wywołuje na presenterze funkcję getTopics z parametrem 'ref'

6. Jeśli widok jest aktwny to w TopicsPresenter to wyświetlany jest ProgressBar i wywoływany GetTopicsCallback

7. W klasie DataRepository wybierane jest źródło danych i są one przekazywane za pomocą funkcji onSuccess do presentera

8. W TopicsPresenter lista z danymi jest przekazywana do TopicsFragment za pomocą showTopics()

9. W TopicsFragment w funkcji showTopics aktualizowane są elementy listy

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.