Je suis sur une activité de fragment qui a 3 fragments. chaque fragments implémentent Recycle-view et son adaptateur. Je veux supprimer d'une liste, puis mettre à jour une autre liste de fragments, mais j'ai un problème à ce sujet.

 public void deleteIt(View v) {

        ZeroActivity.dao.deleteMessages(serverId); // delete the mesage from DB
        switch (TransactionActivity.current_tab) {
            case 0:
                ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
                ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adapter
                break;
            case 2:

Mais toujours après la première suppression et sélectionnez l'application de l'élément final se bloque et obtenez cette erreur:

Invalid index 4, size is 3

Il semble que le problème soit lié à l'index de l'adaptateur et à la liste de disques qui ne correspondent pas!

1
Mahdi 2 janv. 2016 à 12:31

2 réponses

Meilleure réponse

Je résous enfin ce problème en actualisant le nombre d'éléments de Recycle-view en ajoutant:

notifyItemRangeChanged(data_list_position, newsize);

Il semble que Recycle-view doit mettre à jour le nombre de ses listes après avoir supprimé ou ajouté de nouveaux éléments.

       ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
       ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position); //remove message from Adsapter
       ZeroActivity.recycleViewAdapter1.notifyItemRangeChanged(data_list_position, ZeroActivity.itemData_1.size());
0
Mahdi 2 janv. 2016 à 14:58

Vous supprimez deux fois avec la même valeur d'index, c'est pourquoi vous obtenez une erreur dans la deuxième fois. j'espère que ça fonctionnera

ZeroActivity.itemData_1.remove(data_list_position); // delete the message from arrayList
ZeroActivity.recycleViewAdapter1.notifyDataSetChanged();

Ou appeler uniquement cette ligne

ZeroActivity.recycleViewAdapter1.notifyItemRemoved(data_list_position)
0
Tanim reja 2 janv. 2016 à 11:18