Ich habe eine Ansicht mit einem Spinner. Die Aktivität startet einen weiteren Schritt mit einem Popup, in dem ich Werte, die der Elternteil im Spinner anzeigt, hinzufüge oder lösche. In onActivityResult() aktualisiere ich den Inhalt des Spinner, so dass es zusätzliche oder gelöschte Werte widerspiegelt, indem ich meine fillSpinner() -Methode aufruft. Der Parameter dieser Methode ist der zuvor gewählte Wert:Einen Spinner aktualisieren
private void fillSpinner(String value){
Cursor c = mDbHelper.getAllCategories();
startManagingCursor(c);
c.moveToFirst();
String[] from = new String[]{DBAdapter.KEY_CATEGORY};
SimpleCursorAdapter scCats = new SimpleCursorAdapter(
this, android.R.layout.simple_spinner_item,c,from,
new int[]{android.R.id.text1});
scCats.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
category.setAdapter(scCats);
if (value != null && value != "") {
category.setSelection((int)mDbHelper.categoryIndex(value));
}
}
Wenn ich die Spinner öffnen, enthält sie die richtige Liste (das heißt, es wurde aufgefrischt), und der korrekte Wert ausgewählt wird. Das Steuerelement Spinner selbst (in seinem geschlossenen Zustand) zeigt jedoch nicht den ausgewählten Wert, sondern den ersten in der Liste.
Wenn ich den Code im Debugger durchlaufen, ist der Wert Spinner vor und nach dem Aufruf von setSelection() korrekt (und es wird immer mit der gleichen richtigen ID aufgerufen). Da ich jedoch das Ereignis nicht verlassen kann, wenn ich die Ausführung nach einem kurzen Moment fortsetze, ändert sich der Wert im Spinner.
Mit anderen Worten, die angezeigte Zeichenfolge des Drehfelds wird geändert und unterscheidet sich von dem ausgewählten Element, wenn ich von meiner Popup-Aktivität zurückkomme.
Irgendwelche Ideen werden geschätzt.
Danke! Arbeitete für mich. – Yellos