Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Problème pour créer un événement sur un bouton

    24 février 2012 à 10:54:43

    Bonjour,

    Actuellement je développe une application Android qui permet de désactiver ou activer les prises d'une multiprise par Bluetooth. Ça fait quelques jours que je suis bloqué parce que je n'arrive pas à mettre un événement lorsque je clique sur un bouton ou une image qui se trouve dans une ListView.

    Voici mon code :

    MainActivity.java

    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
    	public ListView maListViewPerso;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            maListViewPerso = (ListView) findViewById(R.id.listviewperso);
        	ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
        	HashMap<String, String> map;
        	
            int i;        
           
            
            for(i=0; i<2;i++)
            {
            	map = new HashMap<String, String>();
                map.put("numero_prise", "Prise " + (i+1));
                map.put("image", String.valueOf(R.drawable.ventilator_small));
                map.put("nom_prise", "Ventilateur");
                map.put("prise_on", String.valueOf(R.drawable.imageon));
                map.put("prise_off", String.valueOf(R.drawable.imageoff2));
    
                
                listItem.add(map);
            }
            
            
            
            
            SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.liste,
                    new String[] {"numero_prise", "image", "nom_prise", "prise_on", "prise_off"}, 
                    new int[] {R.id.numeroPrise, R.id.typePrise, R.id.nomPrise, R.id.imageButtonOn, R.id.imageButtonOff});
            maListViewPerso.setAdapter(mSchedule);
            
            
        }
    }
    



    Et mes 2 fichiers XML(main.xml et liste.xml) pour afficher la ListView :

    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
         >
    
        
        
        <LinearLayout
            android:id="@+id/informations"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="center"
            android:visibility="gone"
             >
        <TextView
                android:id="@+id/nomMulti"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=" / "/>
            
            <TextView
                android:id="@+id/nbPrises"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
    	</LinearLayout>
        <TextView
            android:id="@+id/infoGen"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
    
    
    
        <ListView
            android:id="@+id/listviewperso"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </LinearLayout>
    



    liste.xml

    <?xml version="1.0" encoding="utf-8"?>
     
    
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"                
                    android:orientation="horizontal" >
    
                    <LinearLayout
                        android:layout_width="120dip"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_marginTop="10dip"
                        android:layout_marginLeft="10dip"
                        android:paddingLeft="20dip"
                        android:paddingRight="20dip" >
    	
    	                    <TextView
    	                        android:id="@+id/numeroPrise"
    	                        android:layout_width="wrap_content"
    	                        android:layout_height="wrap_content"
    	                        android:layout_gravity="center_horizontal"
    	                        />
    	
    	                    <ImageButton
    	                        android:id="@+id/typePrise"
    	                        android:layout_width="wrap_content"
    	                        android:layout_height="fill_parent"
    	                        android:layout_gravity="center_horizontal"
    	                        />
    	
    	                    <TextView
    	                        android:id="@+id/nomPrise"
    	                        android:layout_width="wrap_content"
    	                        android:layout_height="wrap_content"
    	                        android:layout_gravity="center_horizontal"
    	                        android:layout_marginBottom="10dip"
    	                        />
    	                    
                    </LinearLayout>
                    
                    
                    <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_gravity="center_vertical|right" >
    
    		                <ImageButton
    		                    android:id="@+id/imageButtonOn"
    		                    android:layout_width="wrap_content"
    		                    android:layout_height="wrap_content"
    		                    android:layout_marginLeft="50dip"
    		                    />
    		                
    
    
    
    		                <ImageButton
    		                    android:id="@+id/imageButtonOff"
    		                    android:layout_width="wrap_content"
    		                    android:layout_height="wrap_content"
    		                    android:layout_marginLeft="15dip"
    		                    />
                    
                    </LinearLayout>
                    
                    
                </LinearLayout>
    



    Voici le résultat lorsque j'exécute ce code sur un terminal Android :

    Image utilisateur

    J'aimerais pouvoir mettre un événement lorsque j'appuie sur l'image "On" ou "Off" qui sont des éléments de la ListView mais je n'y arrive pas.

    Ça serait sympa si quelqu'un pourrais m'aider à résoudre ce problème parce je ne vois pas comment le résoudre

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      26 février 2012 à 23:19:45

      Salut
      vous devez ajouter cette méthode dans votre activité

      public void onClick(View v) {
      		switch (v.getId()){
      		case R.id.VotreBouton1;
      			//Traitement1
      			break;
                      case R.id.VotreBouton2;
                              //Traitement2
                              break;
                          }
      }
      

      j’espère que cette réponse vous aiderez :)
      • Partager sur Facebook
      • Partager sur Twitter
        27 février 2012 à 8:50:43

        Je me demande si vous avez testé ce code car chez moi ça ne fonctionne pas du tout...
        • Partager sur Facebook
        • Partager sur Twitter
          29 février 2012 à 0:04:01

          Il voulait dire :
          vue_concernee_par_le_clic.(new View.OnClickListener() {
          			
          			@Override
          			public void onClick(View v) {
          				// Que faire en cas de clic ?
          				
          			}
          		});
          


          Dans ton onCreate par exemple.

          Ou alors faire implémenter ton activité de View.OnClickListener :
          public class MainActivity extends Activity implements View.OnClickListener{
          //blablabla
          
          
          	@Override
          	public void onClick(View v) {
          		switch(v.getId())
          		    {
          		        case R.id.bouton1:
          		        //que faire en cas de clic sur le bouton 1
          		        break;
          
          		        case R.id.bouton2:
          		        //que faire en cas de clic sur le bouton 2
          		        break;
          		    }
          		
          	}
          
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2012 à 14:44:16

            Ça ne fonctionne toujours pas...
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2012 à 17:39:17

              Tu donnes trop de détails sur ton problème, le soucis est que nous sommes submergés d'informations et que perdus par les quantités monolithique de données, nous ne pouvons pas t'aider correctement .
              • Partager sur Facebook
              • Partager sur Twitter
                8 mars 2012 à 9:04:28

                Franchement, je préfère donner assez d'information que trop peu. Pourtant ce n'est pas si compliqué à comprendre mon problème (pas le résoudre). Mais si personne ne peut m'aider, je coderai différemment.

                Merci quand même
                • Partager sur Facebook
                • Partager sur Twitter
                  9 mars 2012 à 21:37:34

                  Nan tu confonds, résoudre ton problème est certainement simple, mais si tu nous dis juste "ça ne fonctionne pas" sans nous donner de détails, on ne pourra pas t'aider du tout.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 mars 2012 à 8:09:41

                    Tu as déjà essayé le bout de code que tu m'as proposé? j'ai ajouté ton code dans mon projet mais lorsque je clique sur un bouton, il ne se passe rien. Je vois pas comment je peux plus décrire... Il n'y a pas de message d'erreur ou autres problèmes, c'est juste qu'il ne se passe rien lorsque j'appuie sur le bouton On ou Off.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 mars 2012 à 8:42:29

                      Bonjour,

                      DakuTenshi et makis essayent de te donner des pistes de solutions et non pas la solution sur un plateau d'argent. C'est aussi ça l'informatique, trouver des solutions à ses problèmes par soi même.

                      Cependant, et si tu veux une réponse toute faite, il existe une manière plus simple (disponible à partir d'une certaine version du SDK android qui m'échappe sans une rapide recherche sur google que je ne ferai pas) qui consiste à rajouter la propriété onClick="maMethode" dans ton fichier xml de ton layout pour le widget que tu désirs faire réagir au clique.

                      Si cette méthode ne marche pas directement, fait au moins une toute petite recherche pour voir comment l'intégrer dans ton propre code parce que non, je n'ai pas testé ton code et non j'ai pas testé la solution que je te donne de tête :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.

                      [Android] Problème pour créer un événement sur un bouton

                      × 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