2 votes

Recycler View met à jour quelques lignes toutes les x secondes

J'ai un pageur de vue. le pageur de vue a 3 sections/onglets qui ont les mêmes fragments. le fragment contient le recycleur. Dans la vue de recyclage, j'ai une mise en page personnalisée pour les rangées. Les rangées contiennent des vues de texte et des images. Pour la vue de texte, il y a une minuterie qui doit être mise à jour toutes les 1 seconde. Pour l'instant, j'utilise une minuterie avec une tâche fixe.

 Timer timer = new Timer();
  timer.scheduleAtFixedRate( new TimerTask() {
        public void run() {

             textview.settext(updatedvalue);

         }
        }, 0, 1000);

Je fais ceci dans bindViewHolder. mais maintenant le problème est que ce timer est applicable pour seulement quelques rangées de la vue de recyclage. Donc, dans ce cas, il appelle toujours dans le respect de cette ligne est visible ou non.

disons que j'ai un total de 30 lignes et que le timer est applicable pour les 4 premières lignes (cela peut être n'importe quelle valeur dépendant de la valeur du serveur). alors comment puis-je faire cette mise à jour pour cette ligne seulement ? mon code est utilisé pour toutes les lignes et cela prend beaucoup de mémoire

2voto

Masum Points 2431

Une fois que j'ai résolu mon problème en utilisant ceci. J'espère que cela fonctionnera

Handler timerHandler;
timerHandler = new Handler();

Runnable timerRunnable = new Runnable() {
    @Override
    public void run() {
        // Here you can update your adapter data
        yourAdapter.notifyDataSetChanged();
        timerHandler.postDelayed(this, 1000); //run every second
    }
};

timerHandler.postDelayed(timerRunnable, 1000); //Start timer after 1 sec

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X