Potoman Posted August 20, 2010 Share Posted August 20, 2010 (edited) 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 August 20, 2010 by Potoman Quote Link to comment Share on other sites More sharing options...
Potoman Posted August 20, 2010 Author Share Posted August 20, 2010 Aussi une dernière question : Pour faire un adaptateur pour ListView, il y a deux possibilité pour le extends : ArrayAdapter ou bien BaseAdapter... C'est quoi la différence ? Quote Link to comment Share on other sites More sharing options...
akex Posted August 20, 2010 Share Posted August 20, 2010 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 Quote Link to comment Share on other sites More sharing options...
Potoman Posted August 24, 2010 Author Share Posted August 24, 2010 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 ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.