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) :

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;
}
Le problème, c'est que lorsque j'appelle la méthode "contacts.getCheckeditemPosition()", j'ai toujours pour réponse "null".

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 :

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;
  }
 
}
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
 
<?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>
Le problème est que rien ne change. Ma ListView ne semble pas vouloir selectionner (checker) les items.

Comment alors procéder ?

Merci d'avance pour votre aide !