setSelection auf Spinner basierend auf rowId
Ich habe einen Spinner Ansicht nach ist bevölkert durch einen SimpleCursorAdapter.
Basierend auf der Auswahl, die ich brauche, um speichern Sie die rowid in den Eintrag Datenbank (position wird nicht funktionieren, denn die Dinge können Hinzugefügt und gelöscht werden aus der Spinner-Datenbank).
Diese kann ich mit Hilfe spinner.getAdapter().getItemId(pos);
. Aber Wenn ich einen Eintrag Bearbeiten, die ich brauche, um die Spinner-position ausgewählt ist, die im Zusammenhang mit dieser rowid (derzeit).
spinner.setSelection(position);
wird nicht funktionieren, weil ich die rowid, ich brauche einen Weg zu finden, die die aktuelle position des Elements in der aktuellen spinner auf der Grundlage der Zeilennummer in der Datenbank.
- Ich habe aktualisiert die Antwort, Überprüfen Sie es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um die Auswahl eines
Spinner
das ist gesichert durch eineCursorAdapter
können Sie eine Schleife durch alle Elemente in derCursor
und suchen für die, die Sie wollen (vorausgesetzt, dass der primary key in Ihrer Tabelle mit dem Namen "_id"):Wenn Sie möchten, Holen Sie sich die Zeilennummer einer ausgewählten Sache, die Sie tun können, etwas ähnliches:
Gibt es vielleicht einen schnelleren Weg, es zu tun, aber das ist bei mir immer funktioniert.
startManagingCursor
, sparen Sie sich die Kopfschmerzen, die ich gerade hatte.')' expected
long id = value.getLong(value.getColumnIndex("_id");
mit)
am Ende.Hatte eine Idee, die beim schreiben ist diese hashtable mit rowid->pos beim Auffüllen der spinner und dann, dass. Könnte jemand helfen, wenn Sie suchen.
Ich Stimme mit Erich Douglass ist oben Antwort aber ich fand die Schnellste Schleife syntax, die nützlich sein wird während
spinner.getCount()
größer ist als 50k auf 100k.So, ich glaube wir können hier Sekunde für bessere Leistung:
Ich denke, dass statt einer for-Schleife ist besser, einer, während, weil, wenn Sie finden Ihr Element, können Sie brechen die Schleife ab.
Ersten Schritt, erstellen Sie einen Blick für Ihre Daten-set, mit joins usw.:
Zweite Schritt:
Dann einfach:
Ergebnisse:
Bekommen position id:
Ergebnisse:
Hoffen, dass Hilfe
https://stackoverflow.com/a/5040748/1206052
dziobas
bereitgestellt hat, eine tolle Antwort.. Aber ich bin nicht überrascht, warum niemand hat es empfohlen.. wollen einfach nur, um einige Korrekturen in seiner Antwort..
Ich einfach ersetzt "wo" mit "auf", die erforderlich ist, um mitmachen..
nun u alle Objekte mit Ihren Positionen im Zusammenhang mit es-ID ' s..
Geben Sie einfach ROW_id der
setselection()
spinnerWarum tun Sie es auf die harte Weise, wenn Sie können, tun es der richtige Weg ist?
Ich beziehe mich auf die Anleitung:
http://d.android.com/reference/android/widget/AdapterView.OnItemSelectedListener.html#onItemSelected%28android.widget.AdapterView%3C?%3E,%20android.view.View,%20int,%20long%29
Beispiel-code:
Dank evancharlton auf #android-dev für diese Erleuchtung. 🙂