Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utiliser un bouton dans un ListView

    6 mai 2013 à 18:40:38

    Bonjour,

    Je n'arrive pas à ouvrir une nouvelle activité en appuyant sur un des boutons d'une ListView, Mon problème vient des Listeners, je vous montre mon code pour mieux comprendre

            maListViewPerso.setOnItemClickListener(new OnItemClickListener() {
                 
                 
                public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                    b.setOnClickListener(new OnClickListener() {
                        public void onClick (View v)    {
                     
                    switch(v.getId())   {
                     
                     
                    case R.id.bouton:
                Intent choix1 = new Intent (Graves_materiaux.this, Exemple.class);
                startActivity(choix1);
                break;
                 
                /*  case 1:
                Intent choix2 = new Intent (MainActivity.this, InfosFTP.class);
                startActivity(choix2);     
                    case 2:
                Intent choix3 = new Intent (.this, InfosPresentation.class);
                startActivity(choix3);
                break;
                    case 3:
                Intent choix4 = new Intent (MainActivity.this, InfosCarte.class);
                startActivity(choix4);*/   
                     
                }
                    }
                    });
            }

    Merci :D

    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2013 à 0:50:03

      Bonjour,

      Quel est le problème exactement ? Tu as placé des boutons sur les lignes de ta ListView et tu n'arrives pas à cliquer dessus ?

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
        7 mai 2013 à 9:16:28

        Oui exactement :), j'ai des boutons sur chaque lignes de ma Listview, et je veux qu'en cliquant sur un bouton qu'il puisse ouvrir une nouvelle activité.

        Mais je n'arrive pas à gérer l'évènement du click sur le bouton :(

        -
        Edité par Peter76 7 mai 2013 à 9:17:21

        • Partager sur Facebook
        • Partager sur Twitter
          7 mai 2013 à 12:05:33

          Essaye de mettre l'attribut android:focusable=false sur tes boutons de ta liste.

          • Partager sur Facebook
          • Partager sur Twitter
          Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
            7 mai 2013 à 15:11:02

            Non malheureusement, ça ne marche pas, j'accède bien à mon activité, où je peux voir mes boutons, mais quand je clique sur un bouton rien ne se passe, je ne vois pas comment faire pour gérer la gestion d'évènements sur les boutons :(

            Une solution ?

            • Partager sur Facebook
            • Partager sur Twitter
              8 mai 2013 à 10:46:04

              Bonjour,

              Il faut utiliser un ListAdapter qui vous permettra de personnaliser les lignes de votre liste et de lancer l'écoute sur les clics des boutons.

              Votre code il ne capture que le click sur les lignes de votre liste, et l'id que vous récupérez dans votre bloc Switch n'est d'autre que l'id de la ligne et non du bouton. 

              Cordialement.

              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2013 à 15:32:40

                Merci, pour votre aide :)

                Par contre je ne sais pas du tout comment utiliser les listAdapter :o

                • Partager sur Facebook
                • Partager sur Twitter
                  9 mai 2013 à 19:24:51

                  Bonjour,

                  Tout d'abord il faut créer un nouveau Layout pour les éléments de ta liste. Dans ton cas chaque ligne contient un bouton.

                  <LinearLayout ...>
                     <Button android:id="bt".../>
                  </LinearLayout>

                  Ensuite il faut créer une classe qui va hériter de BaseAdapter, cette classe sera ton adapter qui va prendre ton layout et le mettre dans chaque ligne ( c'est juste pour faire simple, c'est plus compliqué que ça :p)

                  public class MonAdapter extends BaseAdapter {
                  
                  	
                  	public MonAdapter ()
                  	{
                  		
                  	}
                  	@Override
                  	public int getCount() {
                                  //retourne le nombre de ligne dans ta liste
                  		return 0;
                  	}
                  
                  	@Override
                  	public Object getItem(int position) {
                  		return null;
                  	}
                  
                  	@Override
                  	public long getItemId(int position) {
                  		return position;
                  	}
                  
                  
                  	@Override
                  	public View getView(int position, View convertView, ViewGroup parent) {
                  		
                  	}
                  	
                  
                  }
                  

                  Bien sur j'ai pas mis la solution complète faute de temps et histoire que tu cherche un peu, c'est pas le sujet le plus rare non plus sur le net. ;) 

                  et après tu dois attacher ton adapter à ta listView

                  listview.setAdapter(TON_ADAPTER);

                  Voila, je te laisse essayer, ^^



                  • Partager sur Facebook
                  • Partager sur Twitter

                  Utiliser un bouton dans un ListView

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown