Bonjour,
J'ai une ListView dans laquelle j'aimerais effacer plusieurs items d'un coup.
Je sélectionne donc les items que je veux effacer puis j'appuie sur un bouton qui les supprime. Pour ce faire, j'ai le code suivant :
Et donc quand j'exécute le delete, j'ai un IndexOutOfBoundsException.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 deleteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SparseBooleanArray selectedItems = trainStationListView.getCheckedItemPositions(); for (int i = 0; i < selectedItems.size(); i++) { if (selectedItems.valueAt(i) == true) { String item = (String)trainStationListView.getItemAtPosition(selectedItems.keyAt(i)); trainStationSet.remove(item); adapterArrayList.clear(); adapterArrayList.addAll(trainStationSet); } } adapter.notifyDataSetChanged(); } });
Je peux comprendre d'où vient l'erreur. Je charge dans un SparseBooleanArray les items que j'ai sélectionnés et ensuite j'efface les items de la listView avec l'index qu'ils avaient avant que celle-ci ne soit modifiée. Donc forcément au bout d'un moment ça plante.
Mais je ne vois pas comment je peux faire autrement ...
Une idée ?
Partager