IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Evènement sur CheckBox de ListView


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 165
    Points : 59
    Points
    59
    Par défaut Evènement sur CheckBox de ListView
    Bonjour,

    Je developpe une app android. Je veux afficher un AlertDialog dont il contient une ListView. Cette derniere contient des CheckBox. L'objectif est de faire un Listener sur les CheckBox pour récupérer les éléments selectionnés. Le problème est que je n'arrive pas à atteindre mon objectif.


    Voilà le code source pour l'affichage de l'AlertDialog:

    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
    33
    34
    35
    36
    37
    38
    @Override
    	public void onClick(View arg0) {
     
    		switch(arg0.getId())
    		{
    			case R.id.btn_InviterAbonnes2 :
     
    				LayoutInflater factory2 = LayoutInflater.from(InterfaceReseau.this);
    				alertDialogView = factory2.inflate(R.layout.abonnesinvites, null);
     
    				listView2 = (ListView) alertDialogView.findViewById(R.id.listView8);
     
            		aa = new FancyAdapter();
         	        listView2.setAdapter(aa);
     
    				adb = new AlertDialog.Builder(InterfaceReseau.this);
    				adb.setView(alertDialogView);
    		        adb.setTitle("Inviter des abonnés");
     
    		        adb.setIcon(android.R.drawable.ic_menu_add);
     
    		        adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
    		            public void onClick(DialogInterface dialog, int which) {
     
     
    		          } });
     
    		        adb.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
    		            public void onClick(DialogInterface dialog, int which) {
     
    		          } });
     
    		        adb.show();
     
    			break;
    		}
     
    	}
    Voilà le reste du code :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    class MyListAdapter extends SimpleAdapter
    	 {
    	 	private LayoutInflater	mInflater;
     
    	 	public MyListAdapter (Context context, List<? extends Map<String, ?>> data,
    	 			int resource, String[] from, int[] to)
    	 	{
    	 		super (context, data, resource, from, to);
    	 		mInflater = LayoutInflater.from (context);
     
    	 	}
     
    	 	@Override
    	 	public Object getItem (int position)
    	 	{
    	 		return super.getItem (position);
    	 	}
     
    	 	@Override
    	 	public View getView (int position, View convertView, ViewGroup parent)
    	 	{
    	 		//Ce test permet de ne pas reconstruire la vue si elle est déjà créée
    	 		if (convertView == null)
    	 		{
    	 			convertView = mInflater.inflate (R.layout.contenulisteabonnesinvites, null);
    	 			// On récupère notre checkBox
    	 			CheckBox cb = (CheckBox) convertView.findViewById (R.id.checkBox1);
    	 			// On lui affecte un tag comportant la position de l'item afin de
    	 			// pouvoir le récupérer au clic de la checkbox
    	 			cb.setTag (position);
    	 		}
    	 		return super.getView (position, convertView, parent);
    	 	}
     
    	 }
     
    	 class FancyAdapter extends ArrayAdapter<Utilisateur>
    	 {
    		public FancyAdapter() {
    			super(InterfaceReseau.this, android.R.layout.simple_list_item_1, listU);
    			// TODO Auto-generated constructor stub
     
    		}
     
    		public View getView(final int position, View convertView, ViewGroup parent)
    		{
    			final int pos = position;
     
    			ViewHolder holder;
     
    			if(convertView==null) {
    				LayoutInflater inflater = getLayoutInflater();
    				convertView = inflater.inflate(R.layout.contenulisteabonnesinvites, null);
    				holder = new ViewHolder(convertView);
    				convertView.setTag(holder);
    			}
    			else
    			{
    				holder = (ViewHolder) convertView.getTag();
    			}
     
    			holder.form((Utilisateur) listU.get(position));
    			return (convertView);
     
    		}
     
    	 }
     
    	 class ViewHolder {
     
    		 public TextView login = null;
    		 public CheckBox cb = null;
    		 public Boolean cb1;
     
    		 public ViewHolder(View view) {
    			 login = (TextView) view.findViewById(R.id.textView55);
    			 cb = (CheckBox) view.findViewById(R.id.checkBox1);
    		 }
     
    		 void form(Utilisateur i) {
    			 login.setText(i.getLogin().toString());
    		 }
    	 }
    Merci pour votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pauvre AlertDialog au départ sensée afficher un simple message et deux boutons

    Bon sinon, je n'ai pas vu de code pour gérer les evenement de check sur les check-box ou items.... tu pourrais nous le montrer et nous dire ou tu bloques ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 165
    Points : 59
    Points
    59
    Par défaut
    Je sais pas comment faire un listener pour récupérer un ensemble des CheckBox sélectionnés.

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourquoi un listener ?
    En général, quand on a des checkbox, on a besoin de savoir l'état des checkbox qu'à la fin... quand on clique sur "ok".... et ListView possède un certain nombre de fonctions pour savoir quel item est selectionné (du moment que ListView est déclaré en multiple_choice).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre du Club
    Inscrit en
    Mars 2012
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 165
    Points : 59
    Points
    59
    Par défaut
    J"essayais la méthode getCheckedItemIds() de ListView mais ça marche plus. Je pense que les CheckBox n'ont rien avoir avec la ListView, puisque au moment ou je coche la checkBox, c'est cette derniere qui agit.

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    J"essayais la méthode getCheckedItemIds() de ListView mais ça marche plus. Je pense que les CheckBox n'ont rien avoir avec la ListView, puisque au moment ou je coche la checkBox, c'est cette derniere qui agit.
    Je te conseille de regarder ce tutoriel :
    http://dsilvera.developpez.com/tutor...er-evenements/
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

Discussions similaires

  1. Evènement sur checkbox
    Par elgeek dans le forum jQuery
    Réponses: 5
    Dernier message: 09/01/2013, 11h41
  2. [AC-2010] Evènement click sur CheckBox
    Par fanabullunet dans le forum IHM
    Réponses: 7
    Dernier message: 10/05/2012, 17h14
  3. Problème sur CHECKBOX
    Par dede92 dans le forum Windows
    Réponses: 6
    Dernier message: 22/02/2005, 10h48
  4. Non réception d'un evènement sur une JTable
    Par Kant dans le forum Composants
    Réponses: 4
    Dernier message: 28/05/2004, 10h38
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo