1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

ListView mit Objekt-Array Daten füllen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von oetzi, 23.10.2011.

  1. oetzi, 23.10.2011 #1
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Nabend zusammen,

    ich habe gerade mal beispielweise eine ListView umgesetzt.
    Dabei habe ich zunächst zum füllen der Liste ein statisches String-Array benutzt. Das funktioniert soweit auch alles gut, das war aber ja auch nur die Übung für folgendes :)

    Was ich eigentlich möchte ist:
    - Ein Objekt-Array von einem Server holen (erledigt)
    - Die einzelnen Objekte in einer auswählbaren Liste darstellen
    - und auf Klick eines Eintrags reagieren

    Die Objekte haben vereinfacht gesagt eine ID und eine Beschreibung.

    -> Wie kriege ich jetzt eine ListView erstellt, der ich sowohl die ID und die Beschreibung pro Eintrag mitgeben kann?

    Beispiel-Liste (ID - Beschreibung):
    23 - Hallo
    44 - Welt
    10 - !
    Tippe ich auf "Welt" möchte ich die 44 auswerten können, sprich im Endeffekt wissen, welches Objekt gemeint ist.

    Ich hoffe das war jetzt verständlich genug beschrieben :)

    Schönen Gruß,
    oetzi

    PS:
    Folgende Lösungsmöglichkeit könnte ich mir selbst vorstellen, finde ich aber ein wenig dreckig:
    - nur die Beschreibungen der Objekte in die Liste einfügen
    - bei Klick den Index des ausgewählten Strings auswerten
    - und das Objekt über den Index in meinem Ursprungsarray suchen
    Dabei müsste man dann aufpassen, dass man die Reihenfolge in der Darstellung (z. B. alphabetische Sortierung) nicht verändert, da mir sonst der Index nichts mehr bringt.
    Würde ich wie oben beschrieben einfach die konkrete ID des Objektes zurück kriegen, wäre das ganze wesentlich besser überschaubar und weniger fehleranfällig.
     
  2. nijoX, 24.10.2011 #2
    nijoX

    nijoX Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    5
    Registriert seit:
    06.09.2011
    Hi oetzi,

    spontan fiele mir jetzt dazu ein, die beiden werte, also ID und Beschreibung, in ein String [] zu packen. Um dann das String [] wieder zu bekommen musste einen eigenen Adapter für die Liste anlegen und dessen getView() methode überschreiben so das er nen String [] bekommt, aber nur das erste Element (in dem Fall die Beschreibung) als Text ausgibt. so kannst du dann per OnItemClickListener.getItemAtPosition auf deine ID zugreifen ... ist zwar auf keinen fall die besste variante aber so geht´s auf jeden Fall. :)

    MfG nijoX
     
  3. oetzi, 24.10.2011 #3
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Hi nijox,

    danke für die Beschreibung dieser Möglichkeit.
    Allerdings hast du ja schon selbst gesagt, dass das jetzt nicht wirklich sauberer ist, wie meine Frickellösung :)

    Mal gucken, ob noch jemand eine grandiose Idee hat ;-)
     
  4. nijoX, 24.10.2011 #4
    nijoX

    nijoX Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    5
    Registriert seit:
    06.09.2011
    anstatt eines String[] kannst das Object was du bekommt natürlich auch Parcelable machen ... das wäre vermutlich die gescheiteste Lösung ;)

    (kam vorhin nur net mehr auf den namen :D)

    MfG nijoX
     
  5. Unicate, 24.10.2011 #5
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    oetzi bedankt sich.
  6. oetzi, 25.10.2011 #6
    oetzi

    oetzi Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    148
    Erhaltene Danke:
    8
    Registriert seit:
    25.02.2011
    Phone:
    Samsung Galaxy S5+
    Hi Unicate,

    na da hat der Kollege und ich ja fast zeitgleich die selbe Frage.
    Danke! Ich werde mir das sofort mal angucken

    Gruß,
    oetzi
     

Diese Seite empfehlen