Mon scénario:
-J'utilise une vue de liste en mode de choix multiple pour permettre à un utilisateur de de supprimer plusieurs éléments qu'il/elle a vérifiés, à la fois.
-Lorsque l'utilisateur clique sur le bouton de suppression, je procède comme suit:
-get les positions des éléments cochés à l'aide de: myList.getCheckedItemPositions();
-Obtenez les objets dans cette position et placez-les dans une liste - toDeleteList.
- (QUESTION BASÉE SUR CETTE ÉTAPE) utilisez myList.setItemChecked (position, false) pour décocher l'élément de la liste.
-Retirer les éléments de la « toDeleteList »Android liste vue clarification quest
Maintenant, j'ai été « forcé » à décocher manuellement l'élément de la liste car le résultat de myList.getCheckedItemPositions() ne change pas après la suppression de mylist .. à savoir
-si, par exemple, je supprime le 1er élément (a) de la liste [a, b, c, d], b apparaîtra vérifié après la suppression ie. dans la liste la liste [b, c, d] - après avoir supprimé a.
Question pourquoi? Parce que le SparseBooleanArray retourné par myList.getCheckedItemPositions(); est la même avant et après la suppression de la liste - en utilisant l'adaptateur.
je pensais (je peux me tromper) que, après la suppression d'un élément de la liste via l'adaptateur, le tableau CheckedItemPositions devrait également changer pour refléter le nouvel état de la liste
par exemple. - maliste = [a, b, c, d]
- puis-je consulter les articles à la position 0 et 3 vérifié (a & d)
- les positions de l'objet vérifié (mylist.getCheckedItemPositions()) réseau a des valeurs maintenant true pour les positions 0 et 3
- Si je supprime un & d de la liste, par conséquent, mylist = [b, c], mylist.getCheckedItemPositions() est toujours le même que ci-dessus ie.
- Je m'attendais à ce qu'il ne soit pas vérifié pour les positions 0 & 3 parce que les articles auparavant à ces postes ne sont plus dans la liste.
je suis quelque chose de mal ici (ou ayant le mauvais attentes :))? quelqu'un s'il vous plaît .. clarifier ce
Merci à l'avance,
Merci .. je vois ce que tu veux dire mais je pensais si j'utilise mylist.getCheckedItemPositions() sur la nouvelle liste, ie. avec les éléments précédemment cochés ne sont plus dans la liste (après avoir utilisé adapter.remove() ..) - le résultat devrait être vide/null car ma liste ne contient plus les éléments cochés .. - encore peut-être vous avez raison, merci – cire
vous avez besoin d'appeler la méthode listView.getCheckItemIds() qui renverra les identifiants des éléments checked, et cela fonctionne pour moi, sans rien changer à cela;). la méthode getcheckedItemPositions() ne fonctionne pas :) – Houcine