Entwurfsmuster für Tabs mit RecyclerViews

  • 4 Antworten
  • Letztes Antwortdatum
P

Parg

App-Anbieter (kostenlos)
170
Hallo,

ich bin gerade dabei meine App ein wenig umzuarbeiten und benötige Hilfe beim Entwurfsmuster.
Im Moment habe ich eine Activity mit RecyclerView. Die Daten dafür sind in einer ArrayList in der Activity gespeichert.
Wenn die App beendet wird, speichere ich die Daten in den SharedPrefs und lade diese wieder, wenn die App neu startet.

Nun möchte ich ein TabLayout mit Fragmenten einführen. In jedem Fragment soll eine RecyclerView sein, in der die oben genannten Daten anzeigt werden (gefiltert, je nachdem in welchem Tab man sich befindet).

Nun die Frage: Wie manage ich die Daten? Im Grunde sollen alle RecyclerViews von einem Dataset gespeist werden. Aber wo lege ich es hin? Soll ich die Daten aus den SharedPrefs in jedem Fragment einzeln darstellen und laden, oder sollten sie irgendwo zentral liegen?
Ich habe schon versucht von einem Fragment auf die Daten in der Activity zuzugreifen, habe aber eine NullPointerException bekommen, wahrscheinlich weil die Activity in dem Moment ja nicht aktiv war.

Soll ich die Daten über die Activity in einer eigenen Klasse (Keine Activity) anlegen und dann von den Fragmenten aus darauf zugreifen?

Ich hoffe ihr habt für so etwas ein "best practice" auf Lager, das ihr mit mir teilen wollt.

Gruß
Patrick
 
"Ich habe schon versucht von einem Fragment auf die Daten in der Activity zuzugreifen, habe aber eine NullPointerException bekommen, wahrscheinlich weil die Activity in dem Moment ja nicht aktiv war."

Kann ich mir bei Fragmenten nicht vorstellen, da diese an die Activity gebunden sind. Wie hast du denn versucht an die Daten zu kommen?
 
Das war über eine public Methode in der Activity, auf die ich aus dem Fragment heraus zugegriffen habe. Aber du hast recht, die Activity bleibt ja erhalten (geht ja nicht anders). Der Fehler hatte sicher einen anderen Grund.
Aber darum im speziellen geht es gar nicht.

Wie würdet ihr es handhaben, wenn verschiedenen Recyclerviews auf dieselben Daten zugreifen. Von aus wo würdet ihr den Fragmenten (und damit den Recyclern) bereitstellen?

- In jedem Fragement die Daten seperat laden?
- In der Activity?
- Ganz woanders?
 
Darauf gibt es nicht wirklich eine Antwort. Das hängt von den Daten ab. Ich glaube, jeder hat hier seine eigenen Vorlieben.
Für dein Vorhaben bietet sich am ehesten die erste Option ( In jedem Fragement die Daten seperat laden). Vielleicht eine SQLite Datenbank.
Fang einfach an. Bei konkreten Fehlern, einfach nachfragen. Mit ein paar Zeilen Code und einen vernünftigem Beschreibung des Fehlers (Logcat), bekommt man hier eigentlich immer eine Antwort.
 
  • Danke
Reaktionen: Jaiel
wie markus.tulius schon gesagt hat da hat man seine Lieblinge. SharedPrefs gehen auch. Eine Einfache Referenz der Activity tut es auch um auf deren Member zuzugreifen. Datenbank oder Files. Services die die Daten bereit halten.

Genauso funktioniert auch die Speicherung auf einem zentralen Server. Dann greifst du halt übers Internet auf die Daten bei Gelegenheit immer zu XD
 
Zurück
Oben Unten