ListView & Checkboxes

Deux petites choses à ne pas oublier quand on souhaite faire une liste à choix mlutilples :

  • Rajouter le tag suivant dans la balise ListView : android:choiceMode=”multipleChoice”
  • Si on utilise une vue personnalisée pour les élements : getListView().setItemsCanFocus(false);

La sélection des éléments d’une liste à choix multiple est un peu délicate. Il faut récupérer une liste de Booléens dans un object SparseBooleanArray. Voici un exemple de code qui permet de le parser correctement.

ArrayList checkedParticipants = new ArrayList();
SparseBooleanArray list = getListView().getCheckedItemPositions();
for (int i = 0; i < list.size(); i++) {
  if (list.valueAt(i)) {
    checkedParticipants.add((Entity) getListView().getAdapter().getItem(list.keyAt(i)));
  }
}
Publicités

Étiquettes : , , ,

4 responses to “ListView & Checkboxes”

  1. Adrien Cerdan says :

    Bonjour,

    Merci de votre post, sauriez-vous comment changer l’image des checkboxes de la ListView ? Vu que ce n’est pas un widget à part entière est-ce possible ?

    Merci beaucoup

    • Benoît says :

      Bonjour Adrien,

      C’est possible en changeant le drawable à utiliser. je n’ai pas le code en tête mais ça ressemble à ce qu’on peut trouver sur ce forum :

      http://stackoverflow.com/questions/7783787/how-to-change-default-images-of-checkbox

      • Adrien Cerdan says :

        Merci de votre réponse, en effet c’est possible en utilisant le widget Checkbox, et en lui appliquant android:button=“@drawable/customdrawablecheckbox”

        Or dans votre cas (et le mien aussi) les checkboxes sont implicites, et la ListView ne prend pas de paramètre android:button…

        Si vous avez des pistes je suis preneur.
        Bonne journée

      • Benoît says :

        Bonjour,

        Dans ScoresKeeper je procède d’une autre manière. J’utilise le Widget CheckedTextView. C’est un TextView avec un Checkbox qui s’utilise principalement dans un ListView. (Ça fait un moment que je l’ai codé avait oublié 🙂 ). C’est ce qu’Android utilise par défaut dans ses listes à choix multiples.

        Je n’ai pas testé mais en XML il faudrait utiliser l’attribut checkMark et en java c’est la méthode setCheckMarkDrawable. Ca m’a l’air de ressembler à ce que tu recherches. Cela dépend comment tu crées ton Widget.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :