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 :

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();
	}
});
Et donc quand j'exécute le delete, j'ai un IndexOutOfBoundsException.

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 ?