Jump to content

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.

Edited by Potoman
Link to comment
Share on other 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

Link to comment
Share on other 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 ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...