Datenbank ID an Spinner übergeben und wieder Abfragen

  • Moin Leute
    ich hab da mal wieder ein Problem welches wohl recht einfach zu lösen ist nur komme ich nit weiter.


    Zuerst übergebe ich die aus einer Datenbank ausgelesenen zeilen an eine Datenbank klasse und packe alle in eine Liste wie üblich was auch funktioniert.

    Code
    List<Datensatz> datensatz = dataSource.datenAuslesenALLE(1);
    
    
    ArrayAdapter<Datensatz> spinnerAdapter = new ArrayAdapter<>(
         this,
         android.R.layout.simple_spinner_item,
         datensatz);
    spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerAdapter);

    Jetzt wollte ich in eine zweite Tabelle der Datenbank die _id des im Spinner ausgewählten Elements eintragen,
    nur wie bekomme ich die wieder aus dem Spinner raus?


    ach ja ich benutze eine Knopf um das ereignis auszulösen und kein onItemSelected


    ps.: last euch nicht von der dataSource funktion iritieren der übergebene wert spiegelt eine bestimmte tabelle wieder da ich mir die abfragen für die datenbank selbst angepasst habe.


    Danke im voraus

  • Hallo ein Spinner ist nun mal so das er seine Ergebnisse Klickevents an die onItemSelected schickt. Verstehe nicht was du da mit einem Knopf oder Button willst.


    Versuchen kannst du noch.

    Zitat von https://developer.android.com/reference/android/widget/Spinner.html#getBaseline()

    getBaseline


    added in API level 1
    int getBaseline ()
    Return the offset of the widget's text baseline from the widget's top boundary. If this widget does not support baseline alignment, this method returns -1.

    intthe offset of the baseline within the widget's bounds or -1 if baseline alignment is not supported
  • Das der Spinner seine Ereignisse an onItemCelected schickt dachteich mir schon nur war ich der Meinung das man es auch irgendwieanders auslesen kann.


    Was ich da mit einem Button will ist schnell erklärt, kleinesBeispiel:
    Du hast in der Datenbank zwei Tabellen eine mit Personen und einemit Haustiere
    nun ist in der Tabelle Personen eine spalte in der die Id (ausTabelle Haustiere) des Haustieres stehen soll.
    damit man das zuweisen kann ist im Layout welches zum anzeigen derPersonen Daten vorgesehen ist ein Spinner welches mit den Haustierenaus der Haustiere Tabelle gefüttert wird.
    nun will ich aber kein Ereignis auslösen wenn man ein Haustierauswählt sondern wenn man auf den Button (Speichern) klickt.
    Das mit dem Button ausgelöste Ereignis speichert dann allepersonenbezogenen Daten inklusive der id des ausgewählten Haustieresin der Tabelle.
    Das auslesen und speichern der Daten ist kein Problem nur dasausgewählte Haustier aus dem Spinner und somit seine id auszulesenklappt bei mir noch nicht.


    Im Grunde könnte man ja auch die Position des Eintrages speichernwelche wie ich es bisher getan habe nur gibt das Probleme wenn ichaus der Tabelle Haustiere ein Tier lösche da sich dadurch ja auchdie Position's folge ändert. des weiteren ist dann einweiterverarbeiten des Tieres anhand der in der Personen Tabellegespeicherten id nicht möglich da diese sich ja nicht auf dieHaustier Tabelle bezieht.


    Leider verstehe ich das mit deinem Code oben nicht, sorry.

  • Hi,


    du must ja nicht im onKlick Listner des Spinners deine Speicher Rutine starten. Sondern viel mehr anhand der Position die dir da mitgegeben wird und deiner Spinner liste kannst du doch die ID ermitteln. Und in einer Variablen bis zum Button klick speichern.



    Frage wie sieht den deine Klasse Datensatz aus?


    Also ich erstelle immer erst eine Liste die ich dann den Adapter übergebe. Somit kann ich im Listner an Hand der Position, mir die Daten aus der Liste auslesen, die der User gewählt hat.



    >“ Leider verstehe ich das mit deinem Code oben nicht, sorry.“
    das ist kein Code, sondern eine Methode der Klasse Spinner die ich aus der Googel Doku kopiert habe die dir eventuell helfen könnte. Denn das was die Funktion zurück gibt ist die Position auf die Spinner Liste die gerade angezeigt wird. Zumindest verstehe ich die Funktion so. Da du keine richtige Liste hast nützt dir das wahrscheinlich nicht viel.

  • warum sollte ich keine liste haben???
    in der ersten zeile übergebe ich doch die liste mit Datensätzen.


    Aber danke für den hinweis das ich ja einfach anhand der übergebenen Liste die id ableiten kann mit hilfe der Spinner Position.
    Das funktioniert wunderbar.


    Danke.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!