Halli, hallo
keine Frage nach Code, sondern mehr so nach einem Lösungansatz bzw. best Case bei minimalem Speicheraufwand.
Folgendes Scenario
von Datenquelle A bekomme ich einen Namen. Diese Namen stehen in direktem Zusammenhang mit einem Bild.
Da ein gewisser Satz an Daten stets und ständig wiederkehrt habe ich mir 2 Arrays angelegt und dort Namen/Bildnamen hinterlegt. Die Bilder liegen
als drawables vor.
So nun kann es sein das neue Datensätze dazu kommen und für diesen Fall hatte ich bisher ein Standard-Dummy Bild was angezeigt wurde. (Also Name wurde angeziegt aber mit Standardbild)
Nun habe ich mir eine Lösung gebaut, welche mir auch die "unbekannten" Bilder nachlädt und anzeigt.
-> Standardabfrage prüft die Arrays -> wenn Name/Bild da dann wird die Resource geladen
-> wenn Abfrage negativ verläuft -> Namen/Bildbeziehung sind in einer Datenquelle B (Webserver/MySQL) hinterlegt, hole ich mir per JSON
den Bildnamen und lade das entsprechende Bild vom Webserver B nach
-> funktioniert auch alles schön.
Dem Experten fällt bereits der Hasenfuss bei der Nummer auf. Die Images werden in einem Cache gepuffert. Jedoch muss ich vorher immer noch die JSON-Abfrage durchgeführt werden. Das scheitert bei Offline und schon lande ich wieder beim meinem Fallback Standardbild.
Lange Rede, wenig Sinn. Ich möchte also auch die JSON Abfrage bzw. Response cachen.
Also im Grunde muss ich mir nur zwei Stringpaare ablegen. (Name/BildUrl)
Was ist den jetzt der Königsweg? (gehen wir mal davon aus das die externen Namen/Bildbeziehungen niemals die 40 Einträge Marke übersteigen)
Anmerkung: Bilder werden relativ häufig auf der Startseite genutzt, sollte also Geschwindigkeitsoptimiert sein
-> einfach in die Sharedpreferences pumpen ?
-> Arraylist/Klasse bei Applicationstart aus lokalen Cachedatei (xml/json/textfile) generieren, bei Applicationende würde die Arraylist gespeichert werden, falls neue Einträge dazugekommen sind
-> eigene SQLite Database Lösung
-> andere Ideen ???
Wie gesagt die Anzahl der "Fremdeinträge" ist überschaubar, wichtig wäre die Offlineverfügbarkeit.