Der Problemdatensatz dachte fälschlicherweise, dass der Aufruf der benutzerdefinierten Ansicht invalidate() ungültig ist und die Methode onDraw() nicht neu zeichnet

Beschreibung des Problems: Ich habe heute eine Ansicht angepasst und im Recyclerview angezeigt. Normalerweise wird jedes Element anders angezeigt, da ich den benutzerdefinierten Ansichtsstil für jedes unterschiedliche Element geändert habe. Dadurch werden beim Ausführen jedes Elements Anzeigestile das gleiche. Und es wird gemäß dem Stil der letzten Ansichtseinstellung angezeigt. Nach einer Untersuchung stellte ich fest, dass ich die Zeichenparameter wie Radius und Position des Kreises auf statisch eingestellt hatte. Entsprechend den Eigenschaften von static: Statische Variablen werden beim Erstellen der Klasse zusammen erstellt, und der Lebenszyklus ist derselbe wie der der Klasse, und sie sind einheitlich im Methodenbereich vorhanden. Daher verwenden alle meine benutzerdefinierten Ansichten gemeinsame Parameter. Es scheint also, dass alle benutzerdefinierten Ansichten gleich sind und gemäß den zuletzt eingestellten Parametern angezeigt werden. Weil die letzte Parametereinstellung die Parameter aller benutzerdefinierten Ansichten geändert hat (sie teilen sich eine statische Variable). An diesem Punkt dachte ich, invalidate() sei falsch.

Lösung: Ändern Sie statische Variablen in gewöhnliche Variablen.

 

 

 

Guess you like

Origin blog.csdn.net/gaoqingliang521/article/details/112647010