Beiträge von Heppy

    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.

    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

    Danke für die Denkanstöße hab es hin bekommen.
    Ist sicherlich keine sonderlich schöne lösung aber es funktioniert.
    allein der sich für jede tabelle widerholdene code zum einfügen von daten
    ist auf einen einmaligen code für alle tabellen mit nur 8 zeilen zusammen geschrumpft
    jetzt noch die anderen funktionen umschreiben.

    an eine klasse hab ich auch schon gedacht aber wenn ich das mache kann ich das erstellte objekt dann auch flexibel abfragen über eine for schleife?
    denn getter und setter muss ich ja wieder genau angeben was das universelle zerstört

    hey jogimuc
    kurze antwort: nein :)
    es sind grundsätzlich unterschiedliche tabellen
    die anzahl war ja nur ein beispiel ich hab noch keine entgültige anzahl an tabellen.
    hab in dem projekt eine datenbank helper und eine datasource klasse.
    in dem helper hab ich die die strucktur der datebbank und die create anweisungen der tabellen
    in der datasource datei verarbeite ich die anfragen aller tabellen alles klapt soweit auch ganz gut
    nur würde ich gerne anstelle der ganzen einzelnen anfragen würde ich gerne eine universelle funktion schreiben
    welche auf die struckturen der tabellen zugreift und diese dann mit den übergebenendaten verarbeitet.


    ich hab ne grobe vorstellung wie es gehen könnte aber bekomme es noch nicht richtig zusammen

    Moin moin
    wenn ich eine datenbank habe in der mehrere tabellen mit unterschiedlichen werten entahlten sind habe
    so habe ich bisher für jede tabelle eine funktion geschrieben damit ich die daten eintragen kann.
    was ja bei 2 oder 3 tabellen noch okay ist aber was ist wenn man sagen wir 20 tabellen haben, muss ich
    dann wirklich für jede einzelne ne funktion schreiben zum einfügen zum löschen zum ändern zum abfragen usw
    oder gibts da eine universelle möglichkeit so das ich anstelle der mindestens 80 funktionen dann nur 4 habe?


    so etwas habe ich schon mal mit php und sql gehabt aber leider finde ich es nit mehr.


    Mir ist klar das ich keine genau zugeschnittene anleitung dazu je finden werde aber ein tutorial so was in diese richtung geht wäre klasse.


    Vielen dank für eure hilfe.

    okay hab ne lösung gefunden ob es ne gute ist bin ich mir nicht sicher aber es geht.


    Hatte wohl Tomaten auf den Augen oder nur Salat im Kopf aber hab den Code von oben so abgeändert


    Java
    @Overridepublic  String toString() { 
        if(spalte8 == 1) {
            String output = spalte1 + " - " + spalte2; 
            return output;
        } else {
            String output = spalte3;
            return output;
        }
    }

    Das war wohl zu einfach um sofort darauf zu kommen.
    Sollte jemanden eine bessere lösung einfallen ist sie gerne willkommen.
    ansonsten danke jogimuc für den denkanstoß

    Hallo jogimuc
    Also in der DB sind es 9 spalten daraus werden in dieser ListView allerdings nur max 2 benötigt, die restlichen werden in einer anderen Activity dann zum Bearbeiten oder Löschen neu geladen.
    JA die id hab ich ausgeblendet indem ich in der Klasse



    Java: Datensatz
    @Override
    public  String toString() {
         String output = spalte1 + " - " + spalte2 + " - " + spalte3 + " - " + spalte4 + " - " + spalte5 + " - " + spalte6 + " - " + spalte7 + " - " + spalte8;
    
    
         return output;
    }


    eingefügt habe, ich könnte dies natürlich jetzt auf spalte1 und spalte2 beschränken
    jedoch soll ja je nachdem was in spalte8 steht nur spalte3 angezeigt werden.


    Hatte wie gesagt schon n ne weile rum gesucht und gefunden das man das igendwie über ein getView aufruf regeln kann nur weis ich leider nit wo und wie das gehen soll.


    Das mit dem eigenen Adapter hab ich mir auch überlegt aber leider steh ich im moment noch auf dem schlauch wie genau das gehen soll und wie ich damit ein List<Datensatz> verarbeiten kann.
    Dazu fehlt mir noch ein gutes Tutorial oder sowas.


    Eine neue Liste hab ich tatsächlich auch schon geschrieben und dem Adapter übergeben was mir dann auch alles koreckt angezeigt hat nur scheiterte ich daran dann die _id mit zu übergeben ohne das sie angezeigt wird.


    Danke schon mal für die antwort, weitere hilfe wäre aber sehr willkommen.

    Moin Moin
    Ich befasse mich erst seit kurzem mit der Programmierung von Android Apps und stehe grade vor einem Problem was ich irgendwie nicht mit Google und Co lösen kann.


    Ich lesse eine Datenbank aus und übergebe diese daten an eine ListView mit einem Standard Adapter.
    Die toString der Klasse hab ich überschrieben so das mir die _id aus dem Datensatz nicht mit in der Liste angezeigt wird.
    In dem Datensatz befindet sich ein eintrag welcher bestimmen soll wie die daten Angezeigt werden.
    Nun würde ich gerne wissen was ich machen muss damit anstelle der kompletten Daten nur bestimmte Angezeigt werden je nach Wert des Eintrages.


    z.B.:
    _id Wert1 Wert2 Wert3 Anzeige


    Anzeige = 1 == Wert1, Wert2
    Anzeige = 2 == Wert3
    Anzeige = 3 == Wert1, Wert3


    Jetzt kommt das Problem an der Sache
    An jeden Eintrag soll die _id mit übertragen werden damit ich den zugehörigen Datenbank eintrag nach auswahl weiter bearbeiten kann.


    Damit ich nicht den kompletten Code der App hier rein setzten muss, ware es nett wenn ihr mir einfach sagt was ihr braucht um mir zu helfen.


    Danke im Vorraus.