Position in einem Spinner / StringArray bestimmen

G

Grossi

Gast
Hallo zusammen!

Ich suche schon seit Stunden nach der Lösung für eine eigentlich recht einfache Frage.
Vielleicht könnt ihr mir ja helfen.

Ich habe einen Spinner, der über einen Array gefüllt wird, das in einer xml-Datei definiert wurde:

Code:
<string-array name=[COLOR=red]"entfernungen"[/COLOR]>
 <item>15m</item>
 <item>18m</item>
 <item>30m</item>
 <item>40m</item>
 <item>50m</item>
 <item>60m</item>
 <item>70m</item>
 <item>90m</item>
</string-array>
Beim Verlassen der App speichere ich den gewählten Wert im Klartext in einer Datenbank ab:

Code:
@Override
[COLOR=darkred]protected[/COLOR] [COLOR=darkred]void[/COLOR] onPause() {
 Spinner sp = (Spinner) findViewById(R.id.sp_entfernung);
 [COLOR=darkviolet]String[/COLOR][] bases = getResources().getStringArray(R.array.entfernungen);
 [COLOR=darkviolet]String[/COLOR] entfernung= bases[sp.getSelectedItemPosition()];
 speichern(entfernung);
}
Beim Start der App (Methode onResume()) möchte ich den Spinner auf den zuvor gewählten Wert setzen.
Dazu lese ich den gespeicherten Wert aus der Datenbank (z.B. "30m").
Nun müsste ich die Position dieses Wertes in dem Array wissen.
Aber wie "übersetze" ich den String "30m" in die Position 2?

Leider ist es mir nicht möglich, die Position des gewählten Spinnereintrages in der Datenbank abzuspeichern, da sich das Array durch ein Upgrade der App verändert haben könnte, so dass die gespeicherte Position nicht mehr stimmen könnte.

Ich hoffe, ich habe mich klar genug ausgedrückt und ihr könnt mir weiterhelfen.

Viele Grüße,
Grossi
 
-> java - How to set selected item of Spinner by value, not by position? - Stack Overflow

Aber bedenke, dass der gesuchte Wert evtl. nicht mehr in deinem Array mit drin sein kann (du sagst ja selbst, das Array kann sich bei Updates ändern).

Super! Der folgende Beitrag klappte bei mir sofort:

You have to access the ArrayAdapter directly:
Suppose your Spinner is named mySpinner, and it contains as one of its choices: "some value".
To find the position of "some value" in the Spinner use this:
String myString = "some value"; //the value you want the position for

ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter

int spinnerPosition = myAdap.getPosition(myString);

//set the default according to value
mySpinner.setSelection(spinnerPosition);

Vielen Dank!
Grossi
 

Ähnliche Themen

B
Antworten
1
Aufrufe
798
swa00
swa00
OnkelLon
Antworten
13
Aufrufe
1.972
OnkelLon
OnkelLon
Zurück
Oben Unten