Bei Custom ListView onMeasure nur in bestimmten Situationen triggern

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Bei Custom ListView onMeasure nur in bestimmten Situationen triggern im Android App Entwicklung im Bereich Betriebssysteme & Apps.
J

JoEntwickler

Ambitioniertes Mitglied
Hallo zusammen,

ich habe momentan ein Performanceproblem.
Ich habe eine ListView in dessen Items jeweils ein Text und ein Button für ein Popovermenü ist. In dieser ListView soll man auch mehrere Itemsgleichzeitig löschen können. Das heißt man aktiviert einen Löschmodus. Ist der Aktiv kann man auswählen welche ListViewItems man löschen will. Jedes ausgewählte Item erhält dann eine hervorgehobene Hintergrundfarbe. Das setze ich mit dem View Objekt aus dem onClickListener.
Code:
view.setBackgroundResource(R.color.deleteModeSelectedItemBackgroundDarkMode);
Dabei sollte aber nur das eine Item aktuallisieren.
Mein Problem ist das ich eine eigene ListView habe die beim onMeasure jedesmal die höhe der ListView anpasst. Das wird aber auch getriggert wenn ich die Hintergrundfarbe ändere.
Gibt es möglichkeiten das onMeasure nur zu triggern wenn sich die Anzahl der Items ändert oder sich im Layout die Höhe ändert?

Liebe Grüße
 
swa00

swa00

Moderator
Teammitglied
Moin ,

Mein Problem ist das ich eine eigene ListView habe die beim onMeasure jedesmal die höhe der ListView anpasst. Das wird aber auch getriggert wenn ich die Hintergrundfarbe ändere.
a) das ist erst mal logisch. Denn es wird beim invalidate der sichtbare Inhalt komplett geändert , nicht nur dein Item
b) Warum verwendest du ein ListView ? Man verwendet eher ein ReyclerView , der ist bei weitem perfomanter und berechnet
seinen Content selbst.

Hast du dir selbst denn mal selbst einen Triggerflag gesetzt ?
Des Weiteren würde ich nicht nur die Farbe ändern , sondern auch das deleteflag in deinem DatenArray-Modell
 
Zuletzt bearbeitet:
J

JoEntwickler

Ambitioniertes Mitglied
Hi,
danke für die Tipps. Das mit der Recyclerview kann ich mir mal überlegen ob ich das verwende.
Ich habe jetzt eine Lösung gefunden. Mein Problem war das ich die Höhe von einem Item ermitteln musste und das hab ich gemacht indem ich mit getView mir das Objekt hole. Aber dabei baut er die View ja jedesmal neu. Jetzt habe ich eine Methode inder einfach die Gesamthöhe durch die Anzahl an Items geteilt wird. Das ist viel schneller.
Die custom ListView benötige ich da ich mehrere ListViews brauche mit einer ScrollView ganz außen. Deshalb brauche ich da für die ListViews extra.
Ich lasse es vorherst mal so weil die Performance um einiges besser ist.
Vielen Dank
 
Ähnliche Themen - Bei Custom ListView onMeasure nur in bestimmten Situationen triggern Antworten Datum
4
0
6