Aller au contenu

[Résolu] Gestion de variables sur spinner


Gabin

Recommended Posts

Bonjour,

Alors je vais vous expliquer mon problème, mais avant un peu de code. (Je commence dans la programmation Java/Android donc soyez indulgent ;) )

Compris dans Main.xml

 Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee);
       Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine);
       Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour);
       Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante);
       Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans);
       Spinner sp_composante_.... 

       ArrayAdapter spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item);
       spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_annee.setAdapter(spAnneeAdapter);

       ArrayAdapter spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item);
       spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_semaine.setAdapter(spSemaineAdapter);

       ArrayAdapter spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item);
       spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_jour.setAdapter(spJourAdapter);

       ArrayAdapter spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item);
       spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_composante.setAdapter(spComposanteAdapter);

Je souhaiterais en fait pouvoir afficher une Spinner secondaire en fonction du choix de la Spinner principale.

Je m'explique, l'utilisateur choisira par exemple la composante Iut Orléans dans la Spinner principale (sp_composante) ce qui affichera la Spinner secondaire (sp_composante_iutOrleans).

J'arrive pas à trouver comment récupérer le clic. Je pense faire après un Switch afin d'afficher la Spinner secondaire correspondante à l'id de l'item choisit dans sp_composante.

J'ai trouvé des bouts de code qui je pense devraient pouvoir m'aider mais j'arrive pas à trouver la démarche...

Voici des fonctions qui vous donneront peut être des idées (celles que j'ai essayé de mettre en place):

sp_composante.setOnItemSelectedListener(new ItemSelectedSpinner());

sp_composante.setOnClickListener(new View.OnClickListener() {

		@Override
		public void onClick(View v) {



		}
	});

Bon je continue de potasser le bouquin Android 2 (développement d'applications professionnelles)...

Merci pour votre aide !

Gabin

Modifié par G&Dev
Lien vers le commentaire
Partager sur d’autres sites

Bonjour

Sur la doc officielle

setOnItemClickListener(AdapterView.OnItemClickListener l)

A spinner does not support item click events.

Donc ca c'est sur c'est pas ca.

En recherchant un peu j'ai trouvé ca :

        Spinner spinner = (Spinner) findViewById(R.id.Spinner01);

       /*
        * Create a backing mLocalAdapter for the Spinner from a list of the
        * planets. The list is defined by XML in the strings.xml file.
        */

       this.mAdapter = ArrayAdapter.createFromResource(this, R.array.Planets,
               android.R.layout.simple_spinner_dropdown_item);

       /*
        * Attach the mLocalAdapter to the spinner.
        */

       spinner.setAdapter(this.mAdapter);

       /*
        * Create a listener that is triggered when Android detects the
        * user has selected an item in the Spinner.
        */

       OnItemSelectedListener spinnerListener = new myOnItemSelectedListener(this,this.mAdapter);

       /*
        * Attach the listener to the Spinner.
        */

       spinner.setOnItemSelectedListener(spinnerListener);


       /*
        * To demonstrate a failure in the preConditions test,
        * uncomment the following line.
        * The test will fail because the selection listener for the
        * Spinner is not set.
        */
        // spinner.setOnItemSelectedListener(null);

   }


   /**
    *  A callback listener that implements the
    *  {@link android.widget.AdapterView.OnItemSelectedListener} interface
    *  For views based on adapters, this interface defines the methods available
    *  when the user selects an item from the View.
    *
    */
   public class myOnItemSelectedListener implements OnItemSelectedListener {

       /*
        * provide local instances of the mLocalAdapter and the mLocalContext
        */

       ArrayAdapter<CharSequence> mLocalAdapter;
       Activity mLocalContext;

       /**
        *  Constructor
        *  @param c - The activity that displays the Spinner.
        *  @param ad - The Adapter view that
        *    controls the Spinner.
        *  Instantiate a new listener object.
        */
       public myOnItemSelectedListener(Activity c, ArrayAdapter<CharSequence> ad) {

         this.mLocalContext = c;
         this.mLocalAdapter = ad;

       }

       /**
        * When the user selects an item in the spinner, this method is invoked by the callback
        * chain. Android calls the item selected listener for the spinner, which invokes the
        * onItemSelected method.
        *
        * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(
        *  android.widget.AdapterView, android.view.View, int, long)
        * @param parent - the AdapterView for this listener
        * @param v - the View for this listener
        * @param pos - the 0-based position of the selection in the mLocalAdapter
        * @param row - the 0-based row number of the selection in the View
        */
       public void onItemSelected(AdapterView<?> parent, View v, int pos, long row) {

           SpinnerActivity.this.mPos = pos;
           SpinnerActivity.this.mSelection = parent.getItemAtPosition(pos).toString();
           /*
            * Set the value of the text field in the UI
            */
           TextView resultText = (TextView)findViewById(R.id.SpinnerResult);
           resultText.setText(SpinnerActivity.this.mSelection);
       }

       /**
        * The definition of OnItemSelectedListener requires an override
        * of onNothingSelected(), even though this implementation does not use it.
        * @param parent - The View for this Listener
        */
       public void onNothingSelected(AdapterView<?> parent) {

           // do nothing

       }
   }

J'espère que ca t'aideras.

Cordialement,

Modifié par Naskel
Lien vers le commentaire
Partager sur d’autres sites

Alors j'ai intégré le code que tu m'as donné mais je n'arrive pas à passer la variable mPos d'une activity à l'autre.

Voici mon Main.java :



import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class Main extends Activity {
   public static int mPos;
public static String mSelection;


/** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       Log.i("Alerte", "Debut");

       Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee);
       Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine);
       Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour);
       Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante);

       Spinner sp_composante_cesDroit = (Spinner)findViewById(R.id.sp_composante_cesDroit);
       Spinner sp_composante_cesLettres = (Spinner)findViewById(R.id.sp_composante_cesLettres);
       Spinner sp_composante_droitEco = (Spinner)findViewById(R.id.sp_composante_droitEco);
       Spinner sp_composante_iutBourges = (Spinner)findViewById(R.id.sp_composante_iutBourges);
       Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans);
       Spinner sp_composante_lettresLangues = (Spinner)findViewById(R.id.sp_composante_lettresLangues);
       Spinner sp_composante_OSUC = (Spinner)findViewById(R.id.sp_composante_OSUC);
       Spinner sp_composante_polytechOrleans = (Spinner)findViewById(R.id.sp_composante_polytechOrleans);
       Spinner sp_composante_sciences = (Spinner)findViewById(R.id.sp_composante_sciences);
       Spinner sp_composante_staps = (Spinner)findViewById(R.id.sp_composante_staps);
       Spinner sp_composante_ufrDeg = (Spinner)findViewById(R.id.sp_composante_ufrDeg);

       TextView composanteTitre = (TextView)findViewById(R.id.sp_composanteTitre);

       ArrayAdapter<CharSequence> spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item);
       spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_annee.setAdapter(spAnneeAdapter);

       ArrayAdapter<CharSequence> spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item);
       spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_semaine.setAdapter(spSemaineAdapter);

       ArrayAdapter<CharSequence> spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item);
       spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_jour.setAdapter(spJourAdapter);

       ArrayAdapter<CharSequence> spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item);
       spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_composante.setAdapter(spComposanteAdapter);

       OnItemSelectedListener sp_composanteListener = new ItemSelectedSpinner(this,spComposanteAdapter);

       sp_composante.setOnItemSelectedListener(sp_composanteListener);

/*
    C'est un peu le bazar par là, je ne m'y retrouve plus...

       Bundle posBundle  = this.getIntent().getExtras();

       String mPosSt = posBundle.getString("posItemBundle");

       //Bundle b = getIntent().getExtras();
       //smPos = b.getInt("posItemExt");

       Integer mPos = Integer.parseInt(mPosSt);
*/
       Log.i("Alerte", "Avant le switch");

       switch (mPos) {

       case 1:
		composanteTitre.setText("Filière "+"CES Droit Châteauroux");
       	sp_composante_cesDroit.setVisibility(View.VISIBLE);
		break;

       case 2:
		composanteTitre.setText("Filière "+"CES Lettres Châteauroux");
       	sp_composante_cesLettres.setVisibility(View.VISIBLE);
		break;

       case 3:
		composanteTitre.setText("Filière "+"Droit, Economie, Gestion");
       	sp_composante_droitEco.setVisibility(View.VISIBLE);
		break;

       case 4:
		composanteTitre.setText("Filière "+"Iut Bourges");
       	sp_composante_iutBourges.setVisibility(View.VISIBLE);
		break;

       case 5:
		composanteTitre.setText("Filière "+"Iut Orléans");
       	sp_composante_iutOrleans.setVisibility(View.VISIBLE);
		break;	

       case 6:
		composanteTitre.setText("Filière "+"Lettres, Langues, Sciences Humaines");
       	sp_composante_lettresLangues.setVisibility(View.VISIBLE);
		break;	

       case 7:
		composanteTitre.setText("Filière "+"OSUC");
       	sp_composante_OSUC.setVisibility(View.VISIBLE);
		break;

       case 8:
		composanteTitre.setText("Filière "+"Polytech\'Orléans");
       	sp_composante_polytechOrleans.setVisibility(View.VISIBLE);
		break;

       case 9:
		composanteTitre.setText("Filière "+"Sciences");
       	sp_composante_sciences.setVisibility(View.VISIBLE);
		break;

       case 10:
		composanteTitre.setText("Filière "+"Staps");
       	sp_composante_staps.setVisibility(View.VISIBLE);
		break;

       case 11:
		composanteTitre.setText("Filière "+"UFR DEG Bourges");
       	sp_composante_ufrDeg.setVisibility(View.VISIBLE);
		break;

	default:
		break;
	}




   }
}

et mon ItemSelectedSpinner.java :


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;

public class ItemSelectedSpinner implements OnItemSelectedListener {

ArrayAdapter<CharSequence> mLocalAdapter;
   Activity mLocalContext;

public ItemSelectedSpinner(Activity act, ArrayAdapter<CharSequence> ad) {
	this.mLocalContext = act;
       this.mLocalAdapter = ad;
}

/**
 * @param args
 */
/*public static void main(String[] args) {
	// 

}*/

public static int posItem;

public void onItemSelected(AdapterView<?> parent, View v, int pos, long row) {

	posItem = pos;

	/* J'ai essayé plusieurs solutions ici mais sans grande réussite */

}


@Override
public void onNothingSelected(AdapterView<?> arg0) {
	/* rien */
}



}

J'espère que vous pourrez encore m'aider =)

Je vous remercie,

Gabin

Lien vers le commentaire
Partager sur d’autres sites

Il faut prendre le problème dans l'autre sens. C'est dans la méthode onItemSelected de ton listener que tu dois faire le switch, pas dans le onCreate

Pour ce faire, 2 solutions:

- tu passes en paramètres du constructeur du listener tous les éléments dont il peut avoir besoin (référence sur les spinner)

- ou tu déclares ta classe ItemSelectedSpinner en inner classe de ton Activity, de façon à ce qu'elle puisse avoir une visibilité sur les attributs/variables de celle-ci.

Ce qui donne (sous réserve de fautes de frappe)

Solution 1

Main.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class Main extends Activity {

       /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       Log.i("Alerte", "Debut");

       Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee);
       Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine);
       Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour);
       Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante);

       Spinner sp_composante_cesDroit = (Spinner)findViewById(R.id.sp_composante_cesDroit);
       Spinner sp_composante_cesLettres = (Spinner)findViewById(R.id.sp_composante_cesLettres);
       Spinner sp_composante_droitEco = (Spinner)findViewById(R.id.sp_composante_droitEco);
       Spinner sp_composante_iutBourges = (Spinner)findViewById(R.id.sp_composante_iutBourges);
       Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans);
       Spinner sp_composante_lettresLangues = (Spinner)findViewById(R.id.sp_composante_lettresLangues);
       Spinner sp_composante_OSUC = (Spinner)findViewById(R.id.sp_composante_OSUC);
       Spinner sp_composante_polytechOrleans = (Spinner)findViewById(R.id.sp_composante_polytechOrleans);
       Spinner sp_composante_sciences = (Spinner)findViewById(R.id.sp_composante_sciences);
       Spinner sp_composante_staps = (Spinner)findViewById(R.id.sp_composante_staps);
       Spinner sp_composante_ufrDeg = (Spinner)findViewById(R.id.sp_composante_ufrDeg);

       TextView composanteTitre = (TextView)findViewById(R.id.sp_composanteTitre);

       ArrayAdapter<CharSequence> spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item);
       spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_annee.setAdapter(spAnneeAdapter);

       ArrayAdapter<CharSequence> spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item);
       spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_semaine.setAdapter(spSemaineAdapter);

       ArrayAdapter<CharSequence> spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item);
       spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_jour.setAdapter(spJourAdapter);

       ArrayAdapter<CharSequence> spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item);
       spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_composante.setAdapter(spComposanteAdapter);

       OnItemSelectedListener sp_composanteListener = new ItemSelectedSpinner(composanteTitre, sp_composante_cesDroit, ...); // tous les objets dont tu as besoin dans le listener

       sp_composante.setOnItemSelectedListener(sp_composanteListener);
    }
}

ItemSelectedSpinner.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;

public class ItemSelectedSpinner implements OnItemSelectedListener {

      private TextView composanteTitre;
      private Spinner sp_composante_cesDroit;
      // déclarer tous les objets dont tu as besoin

       public ItemSelectedSpinner(TextView pComposanteTitre, Spinner sp_composante_cesDroit, ...) { // tous les éléments dont tu as besoin
            this.composanteTitre = pComposanteTitre;
            this.sp_composante_cesDroit = pSp_composante_cesDroit;
            // ...
       }

       public void onItemSelected(AdapterView<?> parent, View v, int pos, long row) {
               switch (pos) {

       case 1:
                       composanteTitre.setText("Filière "+"CES Droit Châteauroux");
               sp_composante_cesDroit.setVisibility(View.VISIBLE);
                       break;

       case 2:
                       composanteTitre.setText("Filière "+"CES Lettres Châteauroux");
               sp_composante_cesLettres.setVisibility(View.VISIBLE);
                       break;

       case 3:
                       composanteTitre.setText("Filière "+"Droit, Economie, Gestion");
               sp_composante_droitEco.setVisibility(View.VISIBLE);
                       break;

       case 4:
                       composanteTitre.setText("Filière "+"Iut Bourges");
               sp_composante_iutBourges.setVisibility(View.VISIBLE);
                       break;

       case 5:
                       composanteTitre.setText("Filière "+"Iut Orléans");
               sp_composante_iutOrleans.setVisibility(View.VISIBLE);
                       break;  

       case 6:
                       composanteTitre.setText("Filière "+"Lettres, Langues, Sciences Humaines");
               sp_composante_lettresLangues.setVisibility(View.VISIBLE);
                       break;  

       case 7:
                       composanteTitre.setText("Filière "+"OSUC");
               sp_composante_OSUC.setVisibility(View.VISIBLE);
                       break;

       case 8:
                       composanteTitre.setText("Filière "+"Polytech\'Orléans");
               sp_composante_polytechOrleans.setVisibility(View.VISIBLE);
                       break;

       case 9:
                       composanteTitre.setText("Filière "+"Sciences");
               sp_composante_sciences.setVisibility(View.VISIBLE);
                       break;

       case 10:
                       composanteTitre.setText("Filière "+"Staps");
               sp_composante_staps.setVisibility(View.VISIBLE);
                       break;

       case 11:
                       composanteTitre.setText("Filière "+"UFR DEG Bourges");
               sp_composante_ufrDeg.setVisibility(View.VISIBLE);
                       break;

               default:
                       break;
               }
       }


       @Override
       public void onNothingSelected(AdapterView<?> arg0) {
               /* rien */
       }

}

Solution 2

Un seul fichier Main.java

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class Main extends Activity {

       /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       Log.i("Alerte", "Debut");

       // Mettre en final les variables qui seront utilisées dans le listener
       final Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee);  
       final Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine);
       final Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour);
       final Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante);

       final Spinner sp_composante_cesDroit = (Spinner)findViewById(R.id.sp_composante_cesDroit);
       final Spinner sp_composante_cesLettres = (Spinner)findViewById(R.id.sp_composante_cesLettres);
       final Spinner sp_composante_droitEco = (Spinner)findViewById(R.id.sp_composante_droitEco);
       final Spinner sp_composante_iutBourges = (Spinner)findViewById(R.id.sp_composante_iutBourges);
       final Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans);
       final Spinner sp_composante_lettresLangues = (Spinner)findViewById(R.id.sp_composante_lettresLangues);
       final Spinner sp_composante_OSUC = (Spinner)findViewById(R.id.sp_composante_OSUC);
       final Spinner sp_composante_polytechOrleans = (Spinner)findViewById(R.id.sp_composante_polytechOrleans);
       final Spinner sp_composante_sciences = (Spinner)findViewById(R.id.sp_composante_sciences);
       final Spinner sp_composante_staps = (Spinner)findViewById(R.id.sp_composante_staps);
       final Spinner sp_composante_ufrDeg = (Spinner)findViewById(R.id.sp_composante_ufrDeg);

       final TextView composanteTitre = (TextView)findViewById(R.id.sp_composanteTitre);

       ArrayAdapter<CharSequence> spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item);
       spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_annee.setAdapter(spAnneeAdapter);

       ArrayAdapter<CharSequence> spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item);
       spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_semaine.setAdapter(spSemaineAdapter);

       ArrayAdapter<CharSequence> spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item);
       spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_jour.setAdapter(spJourAdapter);

       ArrayAdapter<CharSequence> spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item);
       spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       sp_composante.setAdapter(spComposanteAdapter);

       OnItemSelectedListener sp_composanteListener = new ItemSelectedSpinner();

       sp_composante.setOnItemSelectedListener(sp_composanteListener);
   }

   public class ItemSelectedSpinner implements OnItemSelectedListener {

       public void onItemSelected(AdapterView<?> parent, View v, int pos, long row) {
               switch (pos) {

       case 1:
                       composanteTitre.setText("Filière "+"CES Droit Châteauroux");
               sp_composante_cesDroit.setVisibility(View.VISIBLE);
                       break;

       case 2:
                       composanteTitre.setText("Filière "+"CES Lettres Châteauroux");
               sp_composante_cesLettres.setVisibility(View.VISIBLE);
                       break;

       case 3:
                       composanteTitre.setText("Filière "+"Droit, Economie, Gestion");
               sp_composante_droitEco.setVisibility(View.VISIBLE);
                       break;

       case 4:
                       composanteTitre.setText("Filière "+"Iut Bourges");
               sp_composante_iutBourges.setVisibility(View.VISIBLE);
                       break;

       case 5:
                       composanteTitre.setText("Filière "+"Iut Orléans");
               sp_composante_iutOrleans.setVisibility(View.VISIBLE);
                       break;  

       case 6:
                       composanteTitre.setText("Filière "+"Lettres, Langues, Sciences Humaines");
               sp_composante_lettresLangues.setVisibility(View.VISIBLE);
                       break;  

       case 7:
                       composanteTitre.setText("Filière "+"OSUC");
               sp_composante_OSUC.setVisibility(View.VISIBLE);
                       break;

       case 8:
                       composanteTitre.setText("Filière "+"Polytech\'Orléans");
               sp_composante_polytechOrleans.setVisibility(View.VISIBLE);
                       break;

       case 9:
                       composanteTitre.setText("Filière "+"Sciences");
               sp_composante_sciences.setVisibility(View.VISIBLE);
                       break;

       case 10:
                       composanteTitre.setText("Filière "+"Staps");
               sp_composante_staps.setVisibility(View.VISIBLE);
                       break;

       case 11:
                       composanteTitre.setText("Filière "+"UFR DEG Bourges");
               sp_composante_ufrDeg.setVisibility(View.VISIBLE);
                       break;

               default:
                       break;
               }
       }


       @Override
       public void onNothingSelected(AdapterView<?> arg0) {
               /* rien */
       }

   }
}

Modifié par chpil
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Super Naskel !

J'avais trouvé un bout de code qui ressemblait à ça mais sans explications :/

Je vais regarder ça dès demain, lorsque j'aurais un peu de temps !

Bonne journée à toi =)

Slt,

Si vous avez resolu votre probleme est ce que vous pouvez m'aider comment vous avez la resolue avec une explication du code svp

Merci d'avance

Il faut prendre le problème dans l'autre sens. C'est dans la méthode onItemSelected de ton listener que tu dois faire le switch, pas dans le onCreate Pour ce faire, 2 solutions: - tu passes en paramètres du constructeur du listener tous les éléments dont il peut avoir besoin (référence sur les spinner) - ou tu déclares ta classe ItemSelectedSpinner en inner classe de ton Activity, de façon à ce qu'elle puisse avoir une visibilité sur les attributs/variables de celle-ci. Ce qui donne (sous réserve de fautes de frappe) Solution 1 Main.java
 import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Alerte", "Debut"); Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee); Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine); Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour); Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante); Spinner sp_composante_cesDroit = (Spinner)findViewById(R.id.sp_composante_cesDroit); Spinner sp_composante_cesLettres = (Spinner)findViewById(R.id.sp_composante_cesLettres); Spinner sp_composante_droitEco = (Spinner)findViewById(R.id.sp_composante_droitEco); Spinner sp_composante_iutBourges = (Spinner)findViewById(R.id.sp_composante_iutBourges); Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans); Spinner sp_composante_lettresLangues = (Spinner)findViewById(R.id.sp_composante_lettresLangues); Spinner sp_composante_OSUC = (Spinner)findViewById(R.id.sp_composante_OSUC); Spinner sp_composante_polytechOrleans = (Spinner)findViewById(R.id.sp_composante_polytechOrleans); Spinner sp_composante_sciences = (Spinner)findViewById(R.id.sp_composante_sciences); Spinner sp_composante_staps = (Spinner)findViewById(R.id.sp_composante_staps); Spinner sp_composante_ufrDeg = (Spinner)findViewById(R.id.sp_composante_ufrDeg); TextView composanteTitre = (TextView)findViewById(R.id.sp_composanteTitre); ArrayAdapter spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item); spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_annee.setAdapter(spAnneeAdapter); ArrayAdapter spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item); spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_semaine.setAdapter(spSemaineAdapter); ArrayAdapter spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item); spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_jour.setAdapter(spJourAdapter); ArrayAdapter spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item); spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_composante.setAdapter(spComposanteAdapter); OnItemSelectedListener sp_composanteListener = new ItemSelectedSpinner(composanteTitre, sp_composante_cesDroit, ...); // tous les objets dont tu as besoin dans le listener sp_composante.setOnItemSelectedListener(sp_composanteListener); } } 

ItemSelectedSpinner.java

 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; public class ItemSelectedSpinner implements OnItemSelectedListener { private TextView composanteTitre; private Spinner sp_composante_cesDroit; // déclarer tous les objets dont tu as besoin public ItemSelectedSpinner(TextView pComposanteTitre, Spinner sp_composante_cesDroit, ...) { // tous les éléments dont tu as besoin this.composanteTitre = pComposanteTitre; this.sp_composante_cesDroit = pSp_composante_cesDroit; // ... } public void onItemSelected(AdapterViewparent, View v, int pos, long row) { switch (pos) { case 1: composanteTitre.setText("Filière "+"CES Droit Châteauroux"); sp_composante_cesDroit.setVisibility(View.VISIBLE); break; case 2: composanteTitre.setText("Filière "+"CES Lettres Châteauroux"); sp_composante_cesLettres.setVisibility(View.VISIBLE); break; case 3: composanteTitre.setText("Filière "+"Droit, Economie, Gestion"); sp_composante_droitEco.setVisibility(View.VISIBLE); break; case 4: composanteTitre.setText("Filière "+"Iut Bourges"); sp_composante_iutBourges.setVisibility(View.VISIBLE); break; case 5: composanteTitre.setText("Filière "+"Iut Orléans"); sp_composante_iutOrleans.setVisibility(View.VISIBLE); break; case 6: composanteTitre.setText("Filière "+"Lettres, Langues, Sciences Humaines"); sp_composante_lettresLangues.setVisibility(View.VISIBLE); break; case 7: composanteTitre.setText("Filière "+"OSUC"); sp_composante_OSUC.setVisibility(View.VISIBLE); break; case 8: composanteTitre.setText("Filière "+"Polytech\'Orléans"); sp_composante_polytechOrleans.setVisibility(View.VISIBLE); break; case 9: composanteTitre.setText("Filière "+"Sciences"); sp_composante_sciences.setVisibility(View.VISIBLE); break; case 10: composanteTitre.setText("Filière "+"Staps"); sp_composante_staps.setVisibility(View.VISIBLE); break; case 11: composanteTitre.setText("Filière "+"UFR DEG Bourges"); sp_composante_ufrDeg.setVisibility(View.VISIBLE); break; default: break; } } @Override public void onNothingSelected(AdapterViewarg0) { /* rien */ } } 

Solution 2 Un seul fichier Main.java

 import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("Alerte", "Debut"); // Mettre en final les variables qui seront utilisées dans le listener final Spinner sp_annee = (Spinner)findViewById(R.id.sp_annee); final Spinner sp_semaine = (Spinner)findViewById(R.id.sp_semaine); final Spinner sp_jour = (Spinner)findViewById(R.id.sp_jour); final Spinner sp_composante = (Spinner)findViewById(R.id.sp_composante); final Spinner sp_composante_cesDroit = (Spinner)findViewById(R.id.sp_composante_cesDroit); final Spinner sp_composante_cesLettres = (Spinner)findViewById(R.id.sp_composante_cesLettres); final Spinner sp_composante_droitEco = (Spinner)findViewById(R.id.sp_composante_droitEco); final Spinner sp_composante_iutBourges = (Spinner)findViewById(R.id.sp_composante_iutBourges); final Spinner sp_composante_iutOrleans = (Spinner)findViewById(R.id.sp_composante_iutOrleans); final Spinner sp_composante_lettresLangues = (Spinner)findViewById(R.id.sp_composante_lettresLangues); final Spinner sp_composante_OSUC = (Spinner)findViewById(R.id.sp_composante_OSUC); final Spinner sp_composante_polytechOrleans = (Spinner)findViewById(R.id.sp_composante_polytechOrleans); final Spinner sp_composante_sciences = (Spinner)findViewById(R.id.sp_composante_sciences); final Spinner sp_composante_staps = (Spinner)findViewById(R.id.sp_composante_staps); final Spinner sp_composante_ufrDeg = (Spinner)findViewById(R.id.sp_composante_ufrDeg); final TextView composanteTitre = (TextView)findViewById(R.id.sp_composanteTitre); ArrayAdapter spAnneeAdapter = ArrayAdapter.createFromResource(this, R.array.sta_annee, android.R.layout.simple_spinner_item); spAnneeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_annee.setAdapter(spAnneeAdapter); ArrayAdapter spSemaineAdapter = ArrayAdapter.createFromResource(this, R.array.sta_semaine, android.R.layout.simple_spinner_item); spSemaineAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_semaine.setAdapter(spSemaineAdapter); ArrayAdapter spJourAdapter = ArrayAdapter.createFromResource(this, R.array.sta_jour, android.R.layout.simple_spinner_item); spJourAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_jour.setAdapter(spJourAdapter); ArrayAdapter spComposanteAdapter = ArrayAdapter.createFromResource(this, R.array.sta_composante, android.R.layout.simple_spinner_item); spComposanteAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_composante.setAdapter(spComposanteAdapter); OnItemSelectedListener sp_composanteListener = new ItemSelectedSpinner(); sp_composante.setOnItemSelectedListener(sp_composanteListener); } public class ItemSelectedSpinner implements OnItemSelectedListener { public void onItemSelected(AdapterViewparent, View v, int pos, long row) { switch (pos) { case 1: composanteTitre.setText("Filière "+"CES Droit Châteauroux"); sp_composante_cesDroit.setVisibility(View.VISIBLE); break; case 2: composanteTitre.setText("Filière "+"CES Lettres Châteauroux"); sp_composante_cesLettres.setVisibility(View.VISIBLE); break; case 3: composanteTitre.setText("Filière "+"Droit, Economie, Gestion"); sp_composante_droitEco.setVisibility(View.VISIBLE); break; case 4: composanteTitre.setText("Filière "+"Iut Bourges"); sp_composante_iutBourges.setVisibility(View.VISIBLE); break; case 5: composanteTitre.setText("Filière "+"Iut Orléans"); sp_composante_iutOrleans.setVisibility(View.VISIBLE); break; case 6: composanteTitre.setText("Filière "+"Lettres, Langues, Sciences Humaines"); sp_composante_lettresLangues.setVisibility(View.VISIBLE); break; case 7: composanteTitre.setText("Filière "+"OSUC"); sp_composante_OSUC.setVisibility(View.VISIBLE); break; case 8: composanteTitre.setText("Filière "+"Polytech\'Orléans"); sp_composante_polytechOrleans.setVisibility(View.VISIBLE); break; case 9: composanteTitre.setText("Filière "+"Sciences"); sp_composante_sciences.setVisibility(View.VISIBLE); break; case 10: composanteTitre.setText("Filière "+"Staps"); sp_composante_staps.setVisibility(View.VISIBLE); break; case 11: composanteTitre.setText("Filière "+"UFR DEG Bourges"); sp_composante_ufrDeg.setVisibility(View.VISIBLE); break; default: break; } } @Override public void onNothingSelected(AdapterViewarg0) { /* rien */ } } } 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...