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 :

Code Spinner de change valeur


Sujet :

Composants graphiques Android

  1. #1
    Membre actif Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Points : 220
    Points
    220
    Par défaut Code Spinner de change valeur
    Bonjour a tous,

    Je m'amuse à faire une petite application android et me voila confronté à un problème. Je retrouve très très souvent une solution sur internet mais rien n'y fais elle ne fonctionne pas chez moi (peu etre une évolution d'android...)

    J'ai 2 Spinner un premier pour choisir "RER, TGV" et un deuxième qui en fonction de mon choix propose des possibilités cohérentes exemple si RER actif alors "RER A, RER B..."

    J'ai choisi de mettre 2 spinner et de faire comme suit:

    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
    public class Destination extends Activity {
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
     
            // Interface
            setContentView(R.layout.destination);
     
            // Liste Moyen de Transport
            final Spinner st = (Spinner) findViewById(R.id.typespinner);
            ArrayAdapter adaptert = ArrayAdapter.createFromResource(this, R.array.type, android.R.layout.simple_spinner_item);
            adaptert.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            st.setAdapter(adaptert);
     
            st.setOnItemClickListener(new ListView.OnItemSelectedListener() {
     
            	public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    				// TODO Auto-generated method stub
            		Spinner sl = (Spinner) findViewById(R.id.lignespinner);
    	            if(st.getItemAtPosition(pos).toString() == "RER")
    	            {
    	            ArrayAdapter adapterl = ArrayAdapter.createFromResource(this, R.array.rer_ligne, android.R.layout.simple_spinner_item);
    	            adapterl.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	            sl.setAdapter(adapterl);
    	            }
    	            else if(st.getItemAtPosition(pos).toString() == "TGV")
    	            {
    	            ArrayAdapter adapterl = ArrayAdapter.createFromResource(this, R.array.tgv_ligne, android.R.layout.simple_spinner_item);
    	            adapterl.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	            sl.setAdapter(adapterl);
    	            }
    	            else
    	            {
    	            ArrayAdapter adapterl = ArrayAdapter.createFromResource(this, R.array.tgv_ligne, android.R.layout.simple_spinner_item);
    	            adapterl.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    	            sl.setAdapter(adapterl);
    	            }
     
    			}
     
    			public void onNothingSelected(AdapterView<?> arg0) {
    				// TODO Auto-generated method stub
     
    			}
     
            });
     
            // Bouton Valider
     
    	}
    }
    Si il y a plus propre comme facon de pensé je suis prenneur
    L'erreur ce situe ici :

    st.setOnItemClickListener(new ListView.OnItemSelectedListener() {
    et a chaque:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayAdapter adapterl = ArrayAdapter.createFromResource(
    Merci a tous,

    Bastien

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    euh ... C'est moi ou tu n'as pas dis ton problème o_O

    Peut on avoir plus de détail sur l'erreur?
    Ton programme plante? Dans ce cas, pouvons nous avoir le logcat!

    Sinon, qu'est ce qui ne fonctionne pas (avec des mots et pas que avec du code sinon on ne comprend pas trop)?

    De plus, ton deuxième spinner doit être déclaré à l’extérieur de ton onItemClickListener!

    Voici un exemple vu sur internet:
    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
     
    private Spinner s;
    private Spinner s2;
    private Spinner s3;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
     
        setContentView(R.layout.main);
        String[] myList = new String[] { "Hello", "World", "Foo", "Bar" };
        String[] myList2 = new String[] { "Hello2", "World2", "Foo2", "Bar2" };
        String[] myList3 = new String[] { "Hello3", "World3", "Foo3", "Bar3" };
     
        s = (Spinner) findViewById(R.id.spinner1);
        s2 = (Spinner) findViewById(R.id.spinner2);
        s3 = (Spinner) findViewById(R.id.spinner3);
     
        s.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList));
        s2.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList2));
        s3.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, myList3));
     
     
        s.setOnItemSelectedListener(new OnItemSelectedListener(){
     
            @Override
            public void onItemSelected(AdapterView<?> parent, View v,
                    int pos, long id) {
                s2.setSelection(pos);
                s3.setSelection(pos);
            }
     
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
     
     
            }});
    }
    Ici, on peut voir que le 1er spinner communique avec les deux autres à chaque fois qu'un item est sélectionné!

  3. #3
    Membre actif Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Bonjour ,

    Désolès, enfaite je ne savais as exprimer mon erreur et l'erreur retourner car je ne pouvais compiler c'était de la syntaxe

    J'ai repris ton modèle (très clair et simple) et c'est nickel

    Merci a toi,

    Bastien

  4. #4
    Membre actif Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Points : 220
    Points
    220
    Par défaut
    Petite question,

    Que pensez vous de ce code, vous parait il logique?

    !!! A noter que je suis susceptible d'avoir plus de 10 possibilités dans le spinner s2 donc plus de 10 if else if par valeur possible (environ 5 aussi) de s2

    Car je ne peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final ArrayAdapter adapterTGV = ArrayAdapter.createFromResource(this, R.array.tgv_ligne, android.R.layout.simple_spinner_item);
            adapterTGV.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    dans la méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     s1.setOnItemSelectedListener(new OnItemSelectedListener(){
    ERREUR:
    The method createFromResource(Context, int, int) in the type ArrayAdapter is not applicable for the arguments (new AdapterView.OnItemSelectedListener(){}, int, int)

    Code complet:

    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
            // Liste Moyen de Transport
            s1 = (Spinner) findViewById(R.id.typespinner);
            s2 = (Spinner) findViewById(R.id.lignespinner);
            s3 = (Spinner) findViewById(R.id.stationspinner);
     
            // Génère Type
            ArrayAdapter adaptertype = ArrayAdapter.createFromResource(this, R.array.type, android.R.layout.simple_spinner_item);
            adaptertype.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            // Génère Ligne
            final ArrayAdapter adapterRER = ArrayAdapter.createFromResource(this, R.array.rer_ligne, android.R.layout.simple_spinner_item);
            adapterRER.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            final ArrayAdapter adapterTGV = ArrayAdapter.createFromResource(this, R.array.tgv_ligne, android.R.layout.simple_spinner_item);
            adapterTGV.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            // Génère Station
            final ArrayAdapter adapterRERA = ArrayAdapter.createFromResource(this, R.array.rer_a_station, android.R.layout.simple_spinner_item);
            adapterRERA.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            final ArrayAdapter adapterRERB = ArrayAdapter.createFromResource(this, R.array.rer_b_station, android.R.layout.simple_spinner_item);
            adapterRERB.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
     
            s1.setAdapter(adaptertype);
     
     
            s1.setOnItemSelectedListener(new OnItemSelectedListener(){
     
                public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
     
                	if(s1.getSelectedItem().toString().equals("RER"))
                	{
                		s2.setAdapter(adapterRER);
     
                		if(s2.getSelectedItem().toString().equals("A"))
                		{
                			s3.setAdapter(adapterRERA);
     
                		}
                		else if(s2.getSelectedItem().toString().equals("B"))
                		{
                			s3.setAdapter(adapterRERB);
                		}
                	}
                	else if(s1.getSelectedItem().toString().equals("TGV"))
                	{
                		s2.setAdapter(adapterTGV);
                	}
                }
     
                public void onNothingSelected(AdapterView<?> arg0) {
     
     
                }});
    Merci pour votre avis car j'aime bien avoir un code bien fait

    Le plus logic de mon point de vue serait 3 adapter (1 par spinner) que je recharge dans onItemSelected en fonction de la sélection mais pas réussi (Cf erreur dans ce message)

    Et pensez vous qu'une base de donnée serait plus approprié?

    Bastien

Discussions similaires

  1. Mini code Rapide / Retour de valeur
    Par ALLODREN dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/04/2009, 10h46
  2. Code pour insérer plusieurs valeurs dans une cellule
    Par azerty1956 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/03/2009, 13h09
  3. Savoir le code couleur de la valeur dans une cellule.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/01/2009, 13h36
  4. écriture de code VB via des valeurs de paramètre
    Par CGANE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/07/2008, 09h51
  5. [debutant][code] insert multiple de valeurs
    Par topaze dans le forum Oracle
    Réponses: 9
    Dernier message: 29/11/2005, 15h22

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