Ho una vista con uno spinner. L'attività inizia un'altra acvitity con un popup in cui aggiungo o elimina i valori mostrati dal genitore nello Spinner. Quindi, in onActivityResult() aggiorno il contenuto dello Spinner in modo che rifletta tutti i valori aggiuntivi o cancellati, chiamando il mio metodo fillSpinner(). Il parametro di questo metodo è il valore precedentemente selezionato:Refreshing a Spinner
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));
}
}
Quando si apre la Spinner, contiene l'elenco corretto (cioè esso era rinvigoriti) e viene selezionato il valore corretto. Tuttavia, il controllo Spinner stesso (nel suo stato chiuso) non mostra il valore selezionato, ma il primo della lista.
Quando passo il codice nel debugger, il valore dello Spinner è corretto prima e dopo chiamo setSelection() (e viene sempre chiamato con lo stesso ID corretto). Tuttavia, poiché non posso uscire dall'evento, quando riprendo l'esecuzione dopo un breve momento il valore nello Spinner cambia.
In altre parole, la stringa visualizzata dello spinner viene modificata ed è diversa dall'elemento selezionato quando torno dall'attività popup.
Tutte le idee sono apprezzate.
Grazie! Ha funzionato per me – Yellos