Witam!
Mam kilka pytań które mnie dręczą w architekturze MVP, którą zastosowałem w mojej aplikacji.
- Mam Activity o nazwie UserSearchActivity, w niej jest po prostu SearchView z RecyclerView, mają za zadanie używając Rest API Githuba wyszukiwać po nazwie użytkowników, jeżeli klikniemy w jakiegoś użytkownika powinno się otworzyć UserDetailsFragment, ale nie jestem pewien jak to rozwiązać. Z tego co wiem przy tej architekturze mam dużą dowolność czy powinienem traktować to jako jeden Widok? Czy jakoś współdzielić obiekt Modelu w którym będzie zapisany kliknięty użytkownik, pomiędzy prezenterami, rozdzielając widok (I wstrzyknąć to np. Daggerem do drugiego prezentera)? Lub po prostu używać paru fragmentów.
Tutaj jak wygląda mój Kontrakt:
interface UserSearchContract {
interface View {
fun showDetails(user : User)
fun showUserList(userList : List<User>)
fun showLoading()
fun hideLoading()
fun notifyUserListChanged()
fun openUrl(url : String)
}
interface Presenter {
fun onUserClick(user : User)
fun onRepoClick(repo : Repo)
fun onQueryEntered(query : String)
fun onLoadMore()
}
}
- Wiem że Prezenter i Model powinny być niezależne od platformy, powiedzmy że np. Użytkownik posiada bardzo wolne łączę z internetem i żeby to zoptymalizować nie będę ściągał ikon użytkowników i używał takich samych dla wszystkich, lub np. bateria będzie słaba, prezenter powinien o czymś takim widzieć czy widok powinien sam reagować na takie sytuacje?