Bonjour à tous !
J'essaie désespéramment de mettre en place dans mon application Android, une sélection multiple dans une ListView pour permettre à l'utilisateur de supprimer plusieurs lignes d'un coup (j'utilise notamment l'action mode).
Pour "lancer" la sélection multiple, je l'active quand l'utilisateur fait un "clic long" sur un item de ma liste, puis je sélectionne (checke) automatiquement l'élément qui a déclenché l'action (dans le code suivant, "contacts" est la ListView) :
Le problème, c'est que lorsque j'appelle la méthode "contacts.getCheckeditemPosition()", j'ai toujours pour réponse "null".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { contacts.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); contacts.setItemChecked(position, true); return true; }
J'ai lu de nombreux sujets sur Internet et tous disent que dans le cas où une vue personnalisée est utilisé pour les items, il convient de créer un container qui implémente l'interface "Checkable". Voici donc ce que je fais :
Voici alors le layout d'un item de ma liste :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 public final class CheckableLinearLayout extends LinearLayout implements Checkable { private boolean checked; public CheckableLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean isChecked() { return checked; } @Override public void setChecked(boolean checked) { this.checked = checked; } @Override public void toggle() { checked = !checked; } }
Le problème est que rien ne change. Ma ListView ne semble pas vouloir selectionner (checker) les items.
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
16
17
18
19
20
21
22
23
24
25
26 <?xml version="1.0" encoding="utf-8"?> <com.package.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dip" android:background="@drawable/bg_contact" > <ImageView android:id="@+id/contactPhoto" android:layout_width="75dip" android:layout_height="75dip" /> <TextView android:id="@+id/contactName" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dip" android:layout_gravity="center_vertical" android:textColor="@color/black" /> </com.package.CheckableLinearLayout>
Comment alors procéder ?
Merci d'avance pour votre aide !
Partager