"remove" von sharedPreferences

  • Antworten:3
zulu23
  • Forum-Beiträge: 2

07.03.2013, 08:39:10 via Website

Hallo zusammen

Ich habe volgendes Problem.
Ich habe mit sharedPreferences einige String-Werte gespeichert und diese gebe ich mit einem Adapter auf eine ListView aus.

Wenn ich jetzt aber mit remove einen String-Wert lösche, ist zwar der String-Wert leer aber der Platz ist immer noch vorhanden im SharedPreferences. Daher habe ich den in der ListView einen leeren Platz.

Ich lösche den String-Wert so:

Code:

sharedPreferences = getSharedPreferences("Mypref", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(key);
editor.commit();

wird bei dieser Methode nicht der Platz auch gelöscht? Ich lese auch die Anzahl Einträge im sharedPreferences aus.
So:
Code:

anzahl = sharedPreferences.getInt(key, 0);

..und die ist immer gleich gross..

Kann mir evtl. einer helfen wo da das Problem liegt?

Danke und Gruss
zulu23

Antworten
Enrico
  • Forum-Beiträge: 33

07.03.2013, 09:04:15 via App

das vorgehen das du beschreibst, sadür würde ich eher eine sql lite datenbank benutzen.

Antworten
zulu23
  • Forum-Beiträge: 2

07.03.2013, 09:38:53 via Website

hmmm meinst du das für ca.10Werte eine solche Sql lite Datenbank besser wäre? Ich hab mich einbisschen im Internet schlau gemacht und es wird glaub von vielen für kleinere Datenmengen genutzt die sharedPreferences...

Antworten
Christian
  • Forum-Beiträge: 307

07.03.2013, 12:18:20 via Website

Hi zulu23,

keine Ahnung was du machst aber bei mir wird der Key aus der XML entfernt.
1SharedPreferences settings = getSharedPreferences("myPrefFile", Context.MODE_PRIVATE);
2
3 //Setzen
4 SharedPreferences.Editor editor = settings.edit();
5 editor.putInt("Test123", 3);
6 editor.commit();
7
8 //auslesen
9 Log.i("MainActivity","Test123: " + settings.getInt("Test123", 0));
10 //Ausgabe: Test123: 3
11
12 //löschen
13 editor.remove("Test123");
14 editor.commit();
15
16 //auslesen
17 Log.i("MainActivity","Test123: " + settings.getInt("Test123", 0));
18 //Ausgabe: Test123: 0
Und wenn ich jetzt in die XML rein schaue wird auch kein Key "Test123" angezeigt.

Zwecks des Speichern also es gibt KEIN richtig oder falsch dabei. Das soll heißen du kannst deine Daten als SharedPreference aber genauso gut auch innerhalb einer DB ablegen.

Ich persönlich würde aber eher zu DB tendieren als zu SharedPreference. Da ich denke das das Handling einfacher ist also sowas wie neu Daten hinzufügen, Daten erweitern oder Anzeigen.

Mfg Christian

— geändert am 07.03.2013, 12:20:04

Antworten