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

ListView verstehen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von cypressious, 21.01.2011.

  1. cypressious, 21.01.2011 #1
    cypressious

    cypressious Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    80
    Erhaltene Danke:
    22
    Registriert seit:
    04.12.2010
    Hallo zusammen,

    als Android Neuling widme ich mich an euch mit einer Frage der allgemeineren Natur. Aus VB.NET bin ich ein simples GUI Konzept gewohnt, d.h. (beispielsweise) eine ListBox ist ein Objekt und lässt sich mithilfe von Methoden wie ListView.Add o.ä. befüllen.

    Nun stoße ich bei Android auf eine XML-basierte GUI. Ich kann per Programmcode nur über Umwege auf meine GUI-Elemente zugreifen und insbesondere das ListView verhält sich dem Programmierer gegenüber sehr "distanziert". Ich kann es nach meinem aktuellen Wissensstand nur über einen ominösen Adapter mit vorgefertigten Arrays befüllen. Wie ich einer befüllten Liste ein weiteres Element hinzufüge, weiß ich aber nicht.

    Könnte mir jemand die Philosophie hinter der ListView erläutern und gern mit ein paar Code Schnippseln untermauern :biggrin:?
    Außerdem würde ich gerne einer ListView Überschriften oder Trennelemente hinzufügen, anstatt nur einheitliche Textelemente.

    Ich hoffe auf rege Beteiligung,

    Grüße, Cypressious.
     
  2. Sabian, 21.01.2011 #2
    Sabian

    Sabian Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    2
    Registriert seit:
    21.12.2010
    Hi,
    Die Arrays für den Adapter müssen nicht unbedingt vorgefertigt sein. Am besten du verwendest kein festes Array sondern einen Vector oder eine ArrayList, diese kannst du dann dynamisch befüllen ( arraylist.add( neues element); ). Anschließend Adapter.notifyDataSetChanged() aufrufen, damit die Änderungen in der GUI sichtbar werden.

    grüße
     
  3. cypressious, 21.01.2011 #3
    cypressious

    cypressious Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    80
    Erhaltene Danke:
    22
    Registriert seit:
    04.12.2010
    Danke für die Antwort. Das sieht in der Tat recht interessant aus. Wie muss ich nun vorgehen, wenn ich die Elemente in der Liste nicht einheitlich darstellen möchte, sondern einige Elemente hervorheben will oder alternativ Trennelemente einfügen?
     
  4. Sabian, 22.01.2011 #4
    Sabian

    Sabian Junior Mitglied

    Beiträge:
    27
    Erhaltene Danke:
    2
    Registriert seit:
    21.12.2010
    Dafür kannst du dir deinen eigenen adapter implementieren. Also eine klasse erstellen, die von z.b. baseadapter oder arrayadapter erbt. Einfach ma nach custom listadapter oder custom listview googlen...gibt es haufenweise tutorials im netz.
    Wichtig ist vor allem die getView methode für dein anliegen, dort könntest du dann deinen listview einträgen den verschiedenen look verpassen:).
    Schau einfach ma bischen rum... wenn du auf keinen grünen zweig kommst, schreib nochmal, dann schreib ich bischen code zusammen.
     
  5. Zonnex, 23.02.2011 #5
    Zonnex

    Zonnex Fortgeschrittenes Mitglied

    Beiträge:
    431
    Erhaltene Danke:
    49
    Registriert seit:
    12.09.2009
    Moin, sry das ich den etwas älteren Thread auspacke...

    Ich habe gerade ein ähnliches Problem...
    und zwar möchte ich bestimmte Einträge einen andere Hintergrund- oder Textfarbe verpassen.. hab mir dazu ein zusätzliches int-array angelegt was immer nen Wert 0-2 added je nachdem was geändert werden soll... funktioniert auch wunderbar solange man nicht scrollt!

    Wenn ich scrolle werden aber auf einmal irgendwelche Einträge verändert...

    Ich arbeite über nen baseadapter und nutze in getview den int-Wert "position" zur lokalisierung... scheinbar is der aber wirklich nur auf das sichtbare bezogen, hat jmd eine Idee wie man die absolute Position bezieht?

    MfG
     
  6. Fr4gg0r, 23.02.2011 #6
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Der position Parameter ist absolut.
    Ansonsten würden ja einfachste Array-listen á la
    view getView(...int position){
    return new View().setText(meinArray[position]);
    }

    garnicht funktionieren. Sie tun es aber. ;)
     
  7. Zonnex, 23.02.2011 #7
    Zonnex

    Zonnex Fortgeschrittenes Mitglied

    Beiträge:
    431
    Erhaltene Danke:
    49
    Registriert seit:
    12.09.2009
    ja stimmt war ja deshalb verwirrt.. aber Problem ist gelöst... hab verplant im nicht default Fall die Textfarbe usw. wieder auf normal zu setzen...

    MfG
     
  8. RED-BARON, 24.02.2011 #8
    RED-BARON

    RED-BARON Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    weils in den thread passt :D

    die Tablet-PCs haben ja ein reichlich großes Display.

    Wie schauts aus - ist es guter Stil hier 2 ListViews

    nebeneinander zu platzieren. Selbst hab ich das noch

    in keiner App gesehen, wüsste auch nicht adhoc wie

    sowas zu implementieren wäre. Schön vorab Infos zu

    bekommen ob es nicht doch besser ist bei einer ListView

    pro Activity zu bleiben. Vielen Dank, RB
     
  9. Fr4gg0r, 24.02.2011 #9
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Sollte doch kein Problem sein 2 ListViews in ein LinearLayout nebeneinander zu packen?
     
  10. Zonnex, 25.02.2011 #10
    Zonnex

    Zonnex Fortgeschrittenes Mitglied

    Beiträge:
    431
    Erhaltene Danke:
    49
    Registriert seit:
    12.09.2009
    es ging im glaube mehr darum ob ma nsowas überhaupt machen sollte...

    zum Tehma:
    eigentlich ne gute Sache ABER dann wird die App wirklich nur für Tablets brauchbar sein ( ok bei den 4"+ smartphones könnt man sicher im landscape Modus auch 2 nebeneinander packen)

    Hab mich mit dem Tablet spaß noch net beschäfttigt aber es wird sicher eine Möglichkeit geben getrennte Oberfläche zu entwickeln (sprich einmal für smartphones und einmal für tablets)

    MfG
     
  11. RED-BARON, 25.02.2011 #11
    RED-BARON

    RED-BARON Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    sorry, fürs meine späte Antwort,
    ja Zonnex - es ging mir nur darum
    ob man sowas überhaupt machen
    sollte, wegen look & feel und so.
    Ich werds einfach mal probieren
    wenn die Hardware da ist wie es
    sich anfühlt :)
     

Diese Seite empfehlen