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 :

Remplir un Spinner en fonction de la sélection faite dans un autre


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 18
    Par défaut Remplir un Spinner en fonction de la sélection faite dans un autre
    Bonjour à tous,

    Débutant sur Android, je me suis mis dans l'idée de créer une petite application simple et qui me permettrait de me faire la main.
    Seulement, j'ai de gros soucis dans mon avancée...

    Actuellement, j'ai une fenêtre contenant 2 Spinners.
    Le premier doit contenir une liste de Région, et le second une liste d'établissement (Ville) qui dépend de la Région choisie.

    Au début, je pensais créer un fichier XML que j'aurais parcouru en xPath comme je l'ai toujours fait. Mais après des heures et des heures de recherche, impossible de trouver comment faire !

    J'ai donc créer un fichier Android XML contenant plusieurs string-array.
    La première contient la liste des Région.
    La seconde la liste des établissement (villes) de la première région.
    La dernière contient la liste des établissements (villes) de la seconde région (je n'ai que 2 régions).

    Le démarrage se fait correctement, je remplis mon premier Spinner avec un ArrayAdapter. Mais je veut créer un ArrayAdapter pour remplir un autre spinner en fonction de la selection effectuée dans le premier Spinner.
    J'ai tenté pas mal de choses... mais impossible de trouver la solution à mon problème !

    L'erreur rencontrée est dans le Switch de mon listener.
    Lors de la création de l'adapter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unAdapter = ArrayAdapter.createFromResource(this,
    					R.array.etablissementsFrancheCompte, android.R.layout.simple_spinner_dropdown_item);
    Le contexte (this) est souligné.

    J'avoue ne plus rien comprendre à ce que je fait, ni même comment corriger mon erreur c'est pourquoi je m'en remet à vous en espérant que vous pourrez m'aider.

    En vous remerciant par avance,

    Cordialement, Yerffoj




    Code principal :

    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
    package lgt.ptino3.gestionpv;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Spinner;
     
    public class AjoutPv extends Activity {
     
    	//Declaration des objets de l'interface graphique
    	Button cmdSuivant;
    	Spinner spRegion, spEtablissement;
    	EditText etNomOuvrage;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		//Liaison du fichier XML avec la classe JAVA
    		setContentView(R.layout.ajoutpv);
     
    		//Liaison entre les controles JAVA et les objets XML
    		etNomOuvrage=(EditText) findViewById(R.id.etNomOuvrage);
    		cmdSuivant=(Button) findViewById(R.id.cmdSuivant);
    		spRegion=(Spinner) findViewById(R.id.spRegion);
    		spEtablissement=(Spinner) findViewById(R.id.spEtablissement);
     
    		spEtablissement.setEnabled(false);
     
    		//AdapterRegion
    		ArrayAdapter<CharSequence> adapterRegion = 
    									ArrayAdapter.createFromResource(this, R.array.regions, 
    															android.R.layout.simple_spinner_dropdown_item);
     
    		adapterRegion.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
    		spRegion.setAdapter(adapterRegion);
    		spRegion.setOnItemSelectedListener(new RegionItemSelectedListener(spRegion, spEtablissement,  etNomOuvrage));
     
    	}
     
    }
    Voici le code de ma classe Listener :

    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
    package lgt.ptino3.gestionpv;
     
    import android.R.string;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.Spinner;
     
    public class RegionItemSelectedListener implements OnItemSelectedListener {
     
    	Spinner spEtablissement, spRegion;
    	EditText etNomOuvrage;
     
    	// ArrayAdapter<CharSequence> adapterEtablissement;
     
    	public void onItemSelected(AdapterView<?> adapterParent, View view,
    			int position, long id) {
     
    		// On commence par activer le spinner Etablissement
    		spEtablissement.setEnabled(true);
     
    		// On recupère ensuite le contenu du spinner de la region
    		int positionRegionChoisie = spRegion.getSelectedItemPosition();
     
    		// Affichage dans le champ texte (test)
    		etNomOuvrage.setText(spRegion.getItemAtPosition(positionRegionChoisie)
    				.toString());
     
    		// Création de l'arrayAdapter en fonction de le la region
    		ArrayAdapter<CharSequence> adapterEtablissement = null;
    		remplirAdapter(adapterEtablissement, positionRegionChoisie);
     
    	}
    	public void remplirAdapter(ArrayAdapter<CharSequence> unAdapter, int PositionRegion){
    		switch (PositionRegion) {
    		case 0:
    			unAdapter = ArrayAdapter.createFromResource(this, R.array.etablissementsBourgogne,
    					android.R.layout.simple_spinner_dropdown_item);
    			unAdapter
    					.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
    			break;
     
    		case 1:
    			unAdapter = ArrayAdapter.createFromResource(this,
    					R.array.etablissementsFrancheCompte,
    					android.R.layout.simple_spinner_dropdown_item);
    			unAdapter
    					.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    			break;
    		}
    	}
     
    	public void onNothingSelected(AdapterView<?> arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	public RegionItemSelectedListener(Spinner spDeLaRegion,
    			Spinner spDeLEtablissement, EditText etNomDeLOuvrage) {
    		super();
    		this.spRegion = spDeLaRegion;
    		this.spEtablissement = spDeLEtablissement;
    		this.etNomOuvrage = etNomDeLOuvrage;
     
    	}
    }

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par défaut
    Salut,

    j'espère que tu auras bientôt des réponses car ce sujet m'intéresse également ;-)

    @+Mat

  3. #3
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    RegionItemSelectedListener n'implémente pas "Context"....
    Il te faut un context...

    Solution1: Faire de RegionItemSelectedListed une sous classe de l'activity, dans ce cas, le context est: AjoutPv.this
    Solution2: Passer le contexte au listener...

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/07/2013, 20h28
  2. [MySQL] Comment retirer d'un menu déroulant une sélection faite dans un autre menu déroulant
    Par larsvangeil dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 21/08/2012, 13h43
  3. Réponses: 8
    Dernier message: 08/07/2009, 13h36
  4. fonction qui recherche une chaine dans une autre chaine
    Par pierre2410 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/05/2007, 16h30
  5. Réponses: 8
    Dernier message: 16/06/2006, 18h48

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