ListView verstehen

  • 10 Antworten
  • Neuester Beitrag
Diskutiere ListView verstehen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
cypressious

cypressious

Ambitioniertes Mitglied
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.
 
S

Sabian

Neues Mitglied
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
 
cypressious

cypressious

Ambitioniertes Mitglied
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?
 
S

Sabian

Neues Mitglied
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.
 
Z

Zonnex

Erfahrenes Mitglied
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
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
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. ;)
 
Z

Zonnex

Erfahrenes Mitglied
Fr4gg0r schrieb:
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. ;)
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
 
R

RED-BARON

Fortgeschrittenes Mitglied
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
 
Fr4gg0r

Fr4gg0r

App-Anbieter (Werbung)
Sollte doch kein Problem sein 2 ListViews in ein LinearLayout nebeneinander zu packen?
 
Z

Zonnex

Erfahrenes Mitglied
Fr4gg0r schrieb:
Sollte doch kein Problem sein 2 ListViews in ein LinearLayout nebeneinander zu packen?
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
 
R

RED-BARON

Fortgeschrittenes Mitglied
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 :)