ListView mit unterschiedlichen ausgaben von einer Klasse

  • 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.

  • hallo,
    Wie viele spalten soll denn die Liste haben?
    Denke zwei. Du hast ja schon wie du sagst die id ausgeblendet. Mit den anderen werten müsstest du es ähnlich machen .
    Entweder einen Eigenen Adapter und wenn anzeige gleich 2 dann musst du für die zweite Spalte zb. ein Leerzeichen setzen. Damit es immer die gleiche Anzahl an spalten ist.
    Oder du erstellst aus den Daten von der db eine neue Liste die du dem Adapter übergibst.

  • 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.

  • 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ß

  • Es gibt zwar mehrere Möglichkeiten das umzusetzen aber es kommt auf das selbe hinaus.
    Du kannst Optimieren in dem du die Deklenation und Initalisierung des Strings output weglässt (siehe meine Variante)
    Ansonsten kann ich dir noch die Switch-Case Variante empfehlen, wenn in der Zukunft spalte8 == 2 o.ä. das selbe bewirken soll wie spalte8==1 somit sparst du dir ein if else Block

    "Verbrennt den Hexer!!!"
    "Ich bin Informatiker..."
    "Formatiert ihn!!!"

    Einmal editiert, zuletzt von Ahnungslos () aus folgendem Grund: Fehler im Code (break after return)

Jetzt mitmachen!

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