2 votes

Comment empêcher l'affichage répété d'un même élément dans la RecycleView lorsque l'on tire la disposition Swipe Refresh ?

J'ai un RecyclerView qui se trouve à l'intérieur d'un SwipeRefreshLayout qui obtiendra le Post JSON de mon serveur php.

Donc la situation actuelle est que je n'ai que 5 post dans ma base de données. Ainsi, la première fois que je lance l'application RecyclerView ,il a montré les 5 post ,ce n'est pas un problème.

Le principal problème maintenant, c'est qu'à chaque fois que je tire le SwipeRefreshLayout il tire les mêmes 5 post à afficher dans la RecyclerView encore une fois, donc maintenant il y a un total de 10 articles à l'intérieur des RecyclerView Lorsque je mets à nouveau, il apparaîtra une fois de plus, donc le total est maintenant de 15 articles chacun. post apparaît 3 fois. Donc cela apparaîtra une infinité de fois.

J'ai essayé le responder de cette question qui est de remplacer les 2 méthodes suivantes mais le même élément apparaît toujours.

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}

Donc ce que je veux, c'est que s'il n'y a que 5 posts disponible dans la base de données, il affiche seulement 5 posts dans le RecyclerView Lorsque l'utilisateur tire sur le SwipeRefreshLayout il n'affiche pas les 5 mêmes posts une fois de plus, mais dites à l'utilisateur de ne plus envoyer de nouveaux messages.

Comment puis-je résoudre ce problème ?

0voto

ali hassoun Points 151

Essayer de supprimer tous les éléments du tableau avant de lire le JSON

0voto

Mohamed AbdelraZek Points 192

Dégager le adpater lorsque l'utilisateur tire sur le swiper et recharger les nouvelles données à nouveau pour éviter de répéter

essayez d'utiliser cette méthode pour effacer les données :

public void clear() {
        int size = this.myList.size();
        if (size > 0) {
            for (int i = 0; i < size; i++) {
                this.myList.remove(0);
            }

            this.notifyItemRangeRemoved(0, size);
        }
    }

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