Hallo,
ich hab irgendwie einen Denkfehler oder ein Verständnisproblem.
Ich habe eine Auswahlliste in der Activity mit einem StringArray (lv_arr)
mainListView.setAdapter(new ArrayAdapter<String>(
Activity.this,
android.R.layout.simple_list_item_multiple_choice, lv_arr));
Wenn ich mehrere Punkte selektiert habe und speichere, ist alles vorhanden.
Nun setze ich einen Suchfilter darüber um die Liste einzuschränken und übergib das natürlich einem neuen Array (array_sort)
mainListView.setAdapter(new ArrayAdapter<String>(
Activity.this, android.R.layout.simple_list_item_multiple_choice, array_sort));
Wenn ich das ganze nun speichere, wird nur der neue Wert übernommen und die alten verworfen.
Hier die Speicherfunktion:
private void SaveSelections() {
SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor prefEditor = settingsActivity.edit();
System.err.println("load " + settingsActivity.getAll());
String savedItems = getSavedItems();
System.err.println("neu " + savedItems);
prefEditor.putString(SETTING_LISTE, savedItems);
prefEditor.commit();
}
Alles anzeigen
Und hier der Output:
// 1. Durchlauf mit normaler Liste
System.err load {liste=}
System.err neu Name1
// 2. Durchlauf mit normaler Liste
System.err load {liste=Name1}
System.err neu Name1, Name2, Name3
3. Durchlauf mit Suchfunktion
System.err load {liste=Name1, Name2, Name3}
System.err neu Name4
// Endergebnis
System.err load {liste=Name4}
Alles anzeigen
Wie kann ich ihm beibringen die alten Werte mitzuspeichern?
Danke und Gruß Oliver
<---------------------------->
Nee, hab das Problem gefunden, aber noch nicht gelöst.
Hatte vergessen die Methode mitzuposten die in der SaveSelections aufgerufen wird und da ist das Problem mit der ListView:
private String getSavedItems() {
String savedItems = "";
int count = this.mainListView.getAdapter().getCount();
for (int i = 0; i < count; i++) {
if (this.mainListView.isItemChecked(i)) {
if (savedItems.length() > 0) {
savedItems += "," + this.mainListView.getItemAtPosition(i);
} else {
savedItems += this.mainListView.getItemAtPosition(i);
}
}
}
return savedItems;
}
Alles anzeigen