Aller au contenu

ListView et CheckBox


Potoman

Recommended Posts

Bonjour, mon sujet n'avais pas était je pense très bien compris...

Je souhaite réaliser un système de favoris. J'affiche une ListView qui contient pour chaque item, deux text et une checkbox.

Cela fait maintenant plus d'une journée que j'essaie de faire marqué mon code, et ce, sans succès.

J'ai quelque question :

-1) J'ai vue dans certain exemple, l'utilisation d'une ListActivity, au lieu de notre banal Activity... Quelqu'un pourrais me dire la différence ?

-2) J'ai réussis à faire apparaitre ma listview, avec tout les composant à l'intérieur. le problème se pose lorsque je sélectionne un item. Je souhaiterais que la checkbox ssoit sélectionnez. Comment je peut faire cette chose ?

-3) Le plus étrange, c'est si je clil sur la checkbox, et est bien sélectionné... Mais à la fin, je n'arrive pas récupérer sa valeur pour envoyer les données afin d'entuie, supprimer ces favoris...

Voici mon plan :

public class FavorisRecherche extends Activity implements OnItemClickListener {

}

Enfin mon adapter :

public class FavoriAdapter extends BaseAdapter implements OnCheckedChangeListener {

}

Puis ma classe Favoris :

public class Favori {

}

Est-ce la bonne technique pour réaliser ce que je souhaite faire ? C'est a dire, et ce que ma class Activity pour FavorisRecherche ainsi que les implements sont judicieusement bien placés ?

Cordialement.

Modifié par Potoman
Lien vers le commentaire
Partager sur d’autres sites

Je vais essayer de répondre en partie :

1) Pas de grande différence à part que ta listview doit avoir comme id "@android.R.id.list" et d'utiliser la fonction getListView() qui te permet d'éviter de déclarer ta listview via findViewById (mais c'est android qui s'en occupe).

2) Dans ta définition de ton onItemClickListener, tu peux, à partir de la view donnée en deuxième paramètre du listener, récupérer ton élément checkbox et le passé à checked :

checkbox = (checkBox) view.findViewById(R.id.blabla);

chechbox.setChecked(true);

Attention au CHOICE_MODE

3) Pour récupérer ta valeur regarde par ici : http://developer.android.com/reference/android/widget/ListView.html#getCheckedItemPosition()

Y a plus de sous classes que ça ;).

La différence : arrayadapter est utilisé quand ta source de données est un array. BaseAdapter est la super classe de arrayAdapter et est moins étoffée et nécessite plus de coding. Tu as également cursorAdapter etc.

http://developer.android.com/reference/android/widget/BaseAdapter.html

Lien vers le commentaire
Partager sur d’autres sites

Merci akex.

J'arrive parfaitement à obtenir les item sélectionné de ma listView. Pour ca il n'y a pas de problème.

Le problème, c'est que dans chaque item de ma listeview, j'ai 2 textview, et une checkbox.

Donc il y a un écouteur sur la ListView.

Puis dans l'adaptateur, il y a un écouteur sur la checkBox (Car sinon, lorsque je cliqué sur la checkbox, rien ne se passé. Ma checkbox était sélectionnée mais je n'arrrivais pas à enregistrer le fait que l'item de la ListView été sélectionné.)

J'ai donc rajouté un écouteur dans mon item sur ma checkbox :

    @Override
   public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
       //statesOfCheckBox.put((Integer)((View)arg0).getTag(), !arg1);
       notifyDataSetChanged();
   }

Et là, j'aimerai savoir s'il été possible de récupérer sa position. J'ai testé (Integer)((View)arg0).getTag() mais ça ne marche pas :(

Y a t'il un moyen de trouver sa position par rapport aux autres checkbox dans la listview ?

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...