Spinner nach wert abfragen möglich

  • Antworten:7
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 124

05.07.2014, 22:17:33 via Website

Also ich bin ein bisschen verwirrt, den ich habe nun einen Spinner der über eine DAtenbank eine Liste ausliest, damit gleichnahmige nicht doppelt aufgeführt werden grupiere ich diese nach Titel.

Spinner verlangt ja eine _id. alles gut und recht. nun möchte ich aber weitere werte im zweitem Spinner auslesen dieser braucht aber nun den wert des ersten spinners, ich brauche aber nicht die _id sondern den Titel !! da ich sonst zwei weitere abfragen starten muss...

gibt es da wirklich keine möglichkeit? im internet ist nix zu finden????? das habe ich... und funktioniert aber nicht....

 Spinner glas = (Spinner)findViewById(R.id.text1);
     Spinner dicke = (Spinner)findViewById(R.id.text2);
     String selectedGlas = glas.getSelectedItem().toString(); 
     String selectedDicke = dicke.getSelectedItem().toString();

Das funktioniert nicht... die ausgabe ist

titel = 'android.database.sqlite.SQLiteCursor@4107daa8' AND dicke = 'android.database.sqlite.SQLiteCursor@41076050' AND typ = 'Float'

mit getSelectedItemId() könnte ich jetzt ja auch arbeiten, währe aber umständlich..

Was könnt ihr mir empfehlen.

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

05.07.2014, 22:23:24 via Website

Bei dir sollte das so Funktioneren:

    Cursor c=(Cursor) combo1.getSelectedItem();
String est=c.getString(c.getColumnIndex("titel");

Da du den Spinner mit dem CursorAdapter befüllst, muss du es auch über einen Cursor auslesen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 124

05.07.2014, 22:30:44 via Website

ich weiss was du meinst. leider ist das nicht möglich.

das Problem liegt daran, das 4 RadioButtons geladen werden ( jedenfalls wenn diese in vier typen erhältlich ist) und ein zweiten spinner (mein vorheriges Problem ;) )die verschieden dicken (gruppiert auf alle typen).

Nun dachte ich mir, ich mache einen neuen treath der überprüft ob die eingaben nun überhaupt existieren. also das heisst beim wechsel von den radiobuttons oder beim wechseln im spinner soll dieser treat geladen werden, der dann den "weiter" button aktiviert.........

Aus diesem grund wollte ich das einfach mit

 Spinner glas = (Spinner)findViewById(R.id.text1);
 String selectedGlas = glas.getSelectedItem().toString(); 

aufrufen....

da nicht alle dicken in allen typen verfügbar sein werden

— geändert am 05.07.2014, 22:31:17

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

05.07.2014, 22:37:48 via Website

Ich habe jetzt nicht genz Verstanden was du meinst,
aber warum nimmst du dann überhaupt die View um das zwischenzuspechern.Nimm lieber eine Array list oder ein 2 Dimensionales Array und durchlaufe dies in einer Schleife.
Somit musst du die Werte nicht aus der ListView lesen, ist besser, denn normalerweise nurtzt man Arrays oder Variablen für das Speichern.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 124

05.07.2014, 22:53:50 via Website

hmmmm... darauf bin ich auch schon gestossen ;) wollte es aber nicht wahrhaben....

also das wir uns richtig verstehen. ich möchte nichts zwischenspeichern. ich möchte mit dem ersten Spinner die verschiedenen gläser auslesen, nach der auswahl zeigt es alle dicken und verarbeitungen an. jedoch gibt es nicht für jede verarbeitung auch jede dicke, und da ich den User nicht zwingen will zuerst das oder dies auszuwählen kann er z.b. zuerst die dicke auswählen, und dann die verarbeitung, oder eben umgekehrt.

Jedenfalls sollen alle den gleichen oncliklistener bekommen der dann gleich die db abfragt ob diese kombination möglich ist. wenn nicht wird einfach der "weiter" button" deaktiviert. bis die auswahl stimmt......

dann werde ich mit

long selectedGlas = glas.getSelectedItemId();
long selectedDicke = dicke.getSelectedItemId();

die _id nehmen

mach mit sqlite query und frage da einfach nochmal den titel ab...

danach kann ich einen zweiten query machen

where titel = titel AND dicke = selectedDicke

ich denke das wird die schnellste möglichkeit sein... habe gehofft das es halt nicht nur auf die _id ein zugriff über view gibt....

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

05.07.2014, 23:06:24 via Website

Was ist an dem Zwingen so schlimm?
Das macht aus meiner sicht nichts.
Wenn die Felder übereinander angeornet sind wird der User sowiso das obere zuerst wählen.
So wird es halt für dich einfacher das zu Programmieren.
Oder du lässt den user das erste Wählen, bekommst dann die Auswahl über den ItemClick listener mit und schreibst dann ein Array mit den Möglichkeiten des 2. Spinners.
Dieses Array schreibst du dann sozusagen als Update rein.
Dann wird der 2. Spinner immer in abhänigkeit zum ersten aktualisiert und du musst das nicht so kompliziert machen.
Wenn es aber auch in die andere Richtung funktionerien soll z.b. erst 1 und dann 2 auswählen, dann musst du im spinner 2 auch auf den click reagieren und dann in Abhängigkeit von spinner 2 die Einträge in Spinner 1 updaten.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 124

05.07.2014, 23:15:08 via Website

das währe ne katastrophe!!!! ;) ne scherz.... es geht viel mehr darum, das dieses App denn Preis berechnen soll, und man schnell alles ändern "können" soll, ohne immer wieder von vorne zu beginnen. Es geht "nur" darum :) also. z.b. wie teuer ist jetzt 2 mm dicker? oder doch mit sicherheitsfolie?.....

Naja, wenn jemand ein komplett anderes glas (Spinner 1) will, dann wird der Rest (bis auf die Grösse) nochmal auf 0 gesetzt. Mann kann nicht immer gewinnen ;)

Aber vielen dank für dein Interesse.... jetzt schau ich noch ein bissl WM.... immerhin ich hoff mal die Holländer die kommen weiter, das sind die einzigen die euch noch aufhalten können, muss noch ein bisschen daumen drücken ;) Gruss aus der Schweiz von einem Türken :p )

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

05.07.2014, 23:18:07 via Website

Ok, ich hoffe du findest noch eine Lösung!

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten

Empfohlene Artikel