Neuen background eines Imageviews nach Restart der App behalten.

  • Antworten:3
Yannik Mario
  • Forum-Beiträge: 9

24.02.2015, 12:40:20 via Website

Guten Tag,
Ich arbeite derzeit an einer App, die ImageViews einen neuen Background zuweist. Dazu sollte es aber so sein, dass diese Imageviews ihren neuen Background behalten und nicht auf die ursprüngliche Quelle zurücksetzt, nach einem neustart.
Es handelt sich um 40 Imageviews.. kann ich diese alle in einem Array speichern und dann saven?

MFG

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.492

24.02.2015, 13:05:38 via Website

Mir würde dazu einfallen, die Dateipfade oder Uris in einem Array oder in einer Liste zu speichern und dann kannst du von dem gesetzten Bild die Position in den SharedPreferences speichern.
Wenn die App dann neu startet schaust du welche Position in den SharedPreferences steht und lädst das Bild mit Hilfe der Pfades an der jeweiligen Position im Array.

Edit: Hab grad gesehen es handelt sich um mehrere ImageViews. Dann müsstest du 40 Positionen speichern. Es geht bestimmt effizienter, aber das fällt mir grad dazu ein.

— geändert am 24.02.2015, 13:09:05

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.02.2015, 15:27:57 via Website

Als Alternative könntest du eine liste auch serialisieren und in einem File speichern.
Dann musst du nicht jeden einzelnen Eintrag in den SharedPreferences spechern.
Oder du nimmst eine DB welche sich bei 40 einträgen wahrscheinlich noch nicht lohnt (könnten ja mehr werden)

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sven R.
  • Forum-Beiträge: 1.904

24.02.2015, 15:46:57 via App

Ich würde die Liste in JSON in den SharedPreferences speichern.

Entweder in der Reihenfolge oder explizit den Views zugeordnet (zb per Tag).

Ungefähr so(Reihenfolge):

[pfad1, pfad2, pfad3]

Oder zugeordnet per zb Tag (image view = iv):

{iv1: pfad1, iv2: pfad2}

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten