Verzeweiflung...Spinnerwert auslesen

  • Antworten:7
venni
  • Forum-Beiträge: 89

25.10.2011, 18:39:58 via Website

Hallo zusammen,

ich habe ein Brett vor dem Kopf. Für mich als eher den klassischen Scripter in Perl, PHP ist OO schon etwas "gewöhnungsbedürftig" ;)
Ich mache lade derzeit einen Spinner aus einer SQLite-DB:
1public void LoadFahrerSpinner(){
2 Cursor FahrerCursor = mDbHelper.fetchAllFahrer();
3 startManagingCursor(FahrerCursor);
4 Spinner FahrerSpinner = (Spinner)findViewById(R.id.spinner1);
5 FahrerCursor.moveToFirst();
6 SimpleCursorAdapter spinadapter = new SimpleCursorAdapter(
7 this,
8 android.R.layout.simple_spinner_item,
9 FahrerCursor,
10 new String[] { "name" },
11 new int[] {android.R.id.text1});
12 spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
13 FahrerSpinner.setAdapter(spinadapter);
14 FahrerSpinner.setPrompt(this.getResources().getString(R.string.sp_fahrer_waehlen));
15 FahrerSpinner.setAdapter(spinadapter);
16 }

Mit folgendem versuche ich an den ausgewählten Wert zu kommen:
1final Spinner Fahrerauswahl = (Spinner) findViewById(R.id.spinner1);
2String Fahrer = Fahrerauswahl.getSelectedItem().toString();
3Toast.makeText(this, "Auswahl: " + Fahrer, Toast.LENGTH_SHORT).show();

Zurück bekomme ich allerdings nur den Cursor, nicht den Inhalt den ich dachte mit ".getSelectedItem" zu bekommen. >_>

Hier noch ergänzend die Methode der DB-Klasse mit der ich die SQL-Abfrage mache:
1public Cursor fetchAllFahrer() {
2 return mDb.query(DATABASE_TABLE, new String[] {KEY_ID, KEY_NAME, KEY_PW, KEY_SYNCED},null,null,null,null,KEY_NAME);
3 }

Kann mir als Einsteiger jemand Starthilfe geben?
Würde mich über einen Tipp freuen :grin:

Viele Grüße
Frank

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

25.10.2011, 19:23:48 via Website

Also ich kenne mich zwar nicht gut aus, hab das in einer meiner Apps aber mal so gelöst:
1Cursor cursor = (Cursor) mSpinner.getSelectedItem();
2 long schluessel = cursor.getLong(cursor.getColumnIndexOrThrow("_id"));
3 cursor.close();
4 String txt;
5 try{
6 myDB = openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
7
8 Cursor mCursor = myDB.rawQuery("SELECT * FROM provider WHERE _id = " + schluessel +";", null);
9 mCursor.moveToNext();
10 txt = mCursor.getString(1);
11 stopManagingCursor(mCursor);
12
13
14 } finally {
15 if (myDB != null)
16 myDB.close();
17 }

Hoffe es hilft dir... :)

— geändert am 25.10.2011, 19:24:15

Antworten
venni
  • Forum-Beiträge: 89

25.10.2011, 23:27:36 via Website

Hallo Ludwig,

vorab....vielen, vielen Dank!!!
Du hast mir insofern geholfen das ich an die ID komme um genau als nächstes das zu machen was Du auch gemacht hast....nämlich anhand der ID den Eintrag in der SQLite DB zu löschen :grin:

Ich würde gerne trotzdem der Vollständigkeit halber, ich möchte es halt verstehen, gerne wissen wie ich an den String der Auswahl des Spinners komme.
Wenn da noch jemand weiterhelfen könnte wäre das super nett!
Für mich wäre das Ganze dann "rund" :D

Viele Grüße
Frank

— geändert am 25.10.2011, 23:28:51

Antworten
Ludwig H.
  • Forum-Beiträge: 3.256

26.10.2011, 06:52:40 via App

Ich hatte wie gesagt mal die selbe Frage und soweit ich mich erinnern kann sind wir hier auf den Entschluss gekommen, dass es nicht anders geht. Bin mir aber nicht mehr sicher... :)

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

26.10.2011, 09:11:48 via App

Nach dem getSelectedItem hast Du den Cursor. Mit diesem hast Du Zugriff auf alle Spalten. Dupliziere die Zeile in der Du _id abfragst und hol Dir den String mit dem Namen.

— geändert am 26.10.2011, 09:12:08

Antworten
venni
  • Forum-Beiträge: 89

26.10.2011, 17:39:08 via Website

Harald Wilhelm
Nach dem getSelectedItem hast Du den Cursor. Mit diesem hast Du Zugriff auf alle Spalten. Dupliziere die Zeile in der Du _id abfragst und hol Dir den String mit dem Namen.

Das dachte ich auch. Nur bekomme ich nach dem hier:
1final long schluessel2 = mcursor.getLong(mcursor.getColumnIndexOrThrow("name"));
2Toast.makeText(this, "Wert: " + schluessel2, Toast.LENGTH_SHORT).show();

Folgende Ausgabe im Toast: "Wert: 0"
Das hatte ich schon versucht :(

Antworten
venni
  • Forum-Beiträge: 89

26.10.2011, 18:59:31 via Website

Harald Wilhelm
KEY_NAME bzw. "name" ist ein long?

Die Welt kann so einfach sein...natürlich nicht. Ist ein String...und schon gehts.
DAAANKEEEEEEEE an alle!!! :lol:

Antworten