2

Je l'affichage d'un nombre variable de ViewHolders dans un RecyclerView, chacun avec un CountDownTimer unique en elle, affichée dans un TextView.avec beaucoup CountDownTimers dans RecyclerView ViewHolders

Si je n'ai pas un grand nombre de ViewHolders dans le RecyclerView puis les CountDownTimers tick vers le bas comme prévu, seconde par seconde.

Cependant, ma question se pose quand j'ai un grand nombre (> 10 environ) des articles dans la RecyclerView. Lorsque j'ouvre l'activité avec RecyclerView, je vois les CountDownTimers qui me sont montrés fonctionner correctement, mais lorsque je fais défiler l'ensemble de RecyclerView, les CountDownTimers commencent à mal fonctionner.

Par dysfonctionnement, je veux dire qu'ils fluctuent. Par exemple, un CountDownTimer affiche 20:15 puis saute à 30:16 puis revient à 20:14 puis revient à 30:15. C'est très bizarre. Voici ce que je pense que le problème est: lorsque je fais défiler vers le bas de RecyclerView, ViewHolders avec CountDownTimers disparaissent mais leurs CountDownTimers ne sont pas détruits, et quand je retourne à ces ViewHolders, plusieurs CountDownTimers sont assignés aux TextViews qui affichent leurs comptes à rebours respectifs.

Ma question est la suivante: En supposant que ce que j'ai décrit est en effet le problème, comment puis-je annuler CountDownTimers dans RecyclerView ViewHolders comme ils ont défilé passé?

+0

Jetez un oeil à cette réponse, pourrait vous aider http://stackoverflow.com/a/31060029/6414107 – SaravInfern

Répondre

1

De Ma compréhension RecyclerView:

RecyclerView crée viewHolders autant qu'elle a besoin d'afficher plus un ou plusieurs supplémentaire pour le défilement lisse. Lorsqu'il a besoin d'afficher un nouvel élément, il vérifie l'existence de viewHolder inutilisé. Si existait alors il réutilisait le existant existant sinon crée nouveau.

Dans votre état lorsque vous faites défiler très longtemps, il essaie d'utiliser viewHolder existant qui peut être démarré à rebours. Maintenant, quand un nouvel élément se lie, il commence un autre compte à rebours. C'est pourquoi cela montre un dysfonctionnement.

, vous pouvez ajouter un chèque & décompte d'arrêt vers le bas avant de commencer un compte à rebours. J'espère que cela vous aidera.

Merci d'avance.