Zajmuję się tworzeniem projektu zgodnego z architekturą MVP. Zwykle, gdy używam recyclerView, mój prezenter kontroluje dane adaptera. Ale teraz muszę zrobić adapter do recyklingu z danymi z pamięci podręcznej (lub czymś podobnym do pamięci podręcznej), rozmiar recyklera nie zależy od rozmiaru pamięci podręcznej, więc robię cache za pomocą HashMap gdzie klucz jest - pozycja recyklera, jeśli jest w nim jakiś przedmiot mapa następnie pokazuje dane, w przeciwnym razie pusty wiersz z czymś w rodzaju "dodaj wydarzenia" btn. I nie mogę sobie przypomnieć, gdzie jest miejsce dla tej pamięci podręcznej w takiej strukturze - Model (Dao lub coś w rodzaju CacheManager) lub w adapterze.Pamięć danych adaptera MVP
Pomysł pamięci podręcznej jest następujący: Mam pewne typy zdarzeń, które przechowują w bazie danych, każde wydarzenie modyfikujące zmienia je w db - więc pamięć podręczna musi być aktualizowana.
Podstawowe pytania: gdzie zachować tę pamięć podręczną i załadować ją do adaptera, jak mogę ją synchronizować ze zmianami w bazie danych.
P.S. Również próbuję użyć RX, więc jeśli można go rozwiązać - byłoby bardzo interesujące spróbować.
P.P.S Jeśli wzór repozytorium jest sposobem rozwiązania - witamy. Przeczytaj o tym kiedyś.
Czy korzystanie z repozytorium z adaptera bez prezentera nie jest złe? Zaimplementowałem swoją pamięć podręczną w klasie DAO i nazwałem ją od Adaptora, ale "mam złe przeczucia". P.S. Mój klucz nie jest prostą pozycją, tylko zależy od pozycji. f (pozycja) = klucz – shagi
Masz rację. Dlatego zaproponowałem używanie Ładowarki: (1) Twój prezenter zajmuje się ładowaczem (inicjalizacja, oddzwanianie wyników itp.); (2) moduł ładujący ładuje dane z repozytorium; (3) prezenter przyjmuje wywołanie zwrotne Loader i przekazuje dane do adaptera – Brian
Ok zamiast Loadres używam Rx. Więc mam pomysł inicjalizacji, ale co z działaniami z ViewHolders? Czy powinienem utworzyć interfejs w moim adapterze, a następnie zaimplementować go w Fragment \ Activity lub Presenter oO? Czy istnieje lepszy sposób komunikacji? RxBus (EventBus)? – shagi