Position in einem Spinner / StringArray bestimmen

  • Antworten:3
Gelöschter Account
  • Forum-Beiträge: 4

01.11.2011, 13:51:24 via Website

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:

1<string-array name="entfernungen">
2 <item>15m</item>
3 <item>18m</item>
4 <item>30m</item>
5 <item>40m</item>
6 <item>50m</item>
7 <item>60m</item>
8 <item>70m</item>
9 <item>90m</item>
10</string-array>

Beim Verlassen der App speichere ich den gewählten Wert im Klartext in einer Datenbank ab:

1@Override
2protected void onPause() {
3 Spinner sp = (Spinner) findViewById(R.id.sp_entfernung);
4 String[] bases = getResources().getStringArray(R.array.entfernungen);
5 String entfernung= bases[sp.getSelectedItemPosition()];
6 speichern(entfernung);
7}

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

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

01.11.2011, 15:01:36 via App

Naja,
du könntest deinen Array durchlaufen und gucken, wo dein gespeicherter Wert vorkommt und da dann die Position nehmen.
Oder ist das zu einfach gedacht? :)
Lg Ansgar

Antworten
Gelöschter Account
  • Forum-Beiträge: 4

01.11.2011, 15:19:36 via Website

Ansgar M
Naja,
du könntest deinen Array durchlaufen und gucken, wo dein gespeicherter Wert vorkommt und da dann die Position nehmen.
Oder ist das zu einfach gedacht? :)
Lg Ansgar

Hallo Ansgar,

ich hab inzwischen eine andere Lösung gefunden; guckst Du hier: http://stackoverflow.com/questions/2390102/how-to-set-selected-item-of-spinner-by-value-not-by-position

Das hier klappt super:

1String myString = "some value"; //the value you want the position for
2
3ArrayAdapter myAdap = (ArrayAdapter) mySpinner.getAdapter(); //cast to an ArrayAdapter
4
5int spinnerPosition = myAdap.getPosition(myString);
6
7//set the default according to value
8mySpinner.setSelection(spinnerPosition);

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

02.11.2011, 15:57:18 via App

Ah, ok. Letztendlich wahrscheinlich auch nichts anderes, als vorgeschlagen, bis auf, dass der ArrayAdapter seinen Array von selbst durchsuchen kann :P:)
Lg Ansgar

Antworten