Partage
  • Partager sur Facebook
  • Partager sur Twitter

Android -Sélectionner une ligne connu d'un spinner

    6 mai 2013 à 11:08:59

    Bonjour à tous,

    je tourne en rond avec ce problème qui serait résolu dans d'autres langage tellement c'est simple, mais là je m'énerve parce-que je ne trouve pas...

    Je m'explique :

    J'ai un editText, un spinner (lié à une base de données via un adapter) et un button. Jusque là ça va :)

    Si j'entre un chiffre dans mon editText  j'aimerai que lorsque je clique sur le bouton mon spinner affiche la ligne correspondant à ce chiffre (en admettant bien entendu que mon chiffre ne soit pas plus grand que le nombre de ligne du spinner).

    Par exemple un code du style :

    Bouton.setOnClickListener(new OnClickListener()
    {
    	@Override
    	public void onClick(View v)
    	{
    		int numeroDeLigne = Integer.parseInt(editText.getText().toString());;
    		spinner.selectedItemPosition = numeroDeLigne;
    	}
    });

    Bien sûr la dernière ligne ne fonctionne pas puisque .selectedItemPosition ne correspond pas à la situation, mais c'est pour l'idée générale. 

    Si quelqu'un a une idée ce serait sympa.

    Merci d'avance.



    -
    Edité par Frieurieud 6 mai 2013 à 11:13:55

    • Partager sur Facebook
    • Partager sur Twitter
      7 mai 2013 à 22:37:34

      Ben quoi !!! Personne ? 

      Ma question est tellement idiote que personne n'ose me le dire ???

      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2013 à 10:34:06

        Bonjour,

        Je pense qu'il y a un "Setteur" de position.

        spinner.setPosition(numeroDeLaLigne);

        Cordialement.

        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2013 à 20:00:37

          Logiquement oui... mais je ne le trouve pas et c'est là mon problème...

          j'ai testé tous les setters qui me semblent être proche de ce que j'attends mais rien n'y fait.

          Il doit y avoir une autre astuce.

          Merci quand même.

          • Partager sur Facebook
          • Partager sur Twitter
            9 mai 2013 à 11:43:49

            Bonjour,

            tu peux me montrer la partie où tu instancie ton spinner ? avec de préférence les imports.

            Merci.

            • Partager sur Facebook
            • Partager sur Twitter
              10 mai 2013 à 10:23:53

              Et cela ne marche pas spinnerObject.setSelection(INDEX).
              • Partager sur Facebook
              • Partager sur Twitter
                10 mai 2013 à 14:14:22

                This is my first visit on this site and i found it very informative as you have provided here in this post. I would like to be a part of this site for collecting some more info. I have bookmark this page and after work I read interesting things to update myself and to refresh my mind. I Would expect new posts from you.


                Cheap Umrah Packages, Cheap hajj Packages, Cheap flights To Harare, Flights to Harare

                • Partager sur Facebook
                • Partager sur Twitter
                  10 mai 2013 à 16:05:51

                  Bonjour et désolé du retard de ma réponse.

                  J'ai testé l'aide de vincent091 et ça ne mache pas non plus.

                  Voici les imports

                  import java.io.File;
                  import java.util.ArrayList;
                  import java.util.Collections;
                  
                  import Class.ClassParametres;
                  import android.annotation.SuppressLint;
                  import android.app.Activity;
                  import android.app.AlertDialog;
                  import android.content.DialogInterface;
                  import android.content.Intent;
                  import android.content.SharedPreferences;
                  import android.database.Cursor;
                  import android.database.SQLException;
                  import android.database.sqlite.SQLiteDatabase;
                  import android.os.Bundle;
                  import android.view.Menu;
                  import android.view.MenuItem;
                  import android.view.MotionEvent;
                  import android.view.SubMenu;
                  import android.view.View;
                  import android.view.View.OnClickListener;
                  import android.widget.AdapterView;
                  import android.widget.AdapterView.OnItemSelectedListener;
                  import android.widget.ArrayAdapter;
                  import android.widget.CheckBox;
                  import android.widget.EditText;
                  import android.widget.ImageButton;
                  import android.widget.LinearLayout;
                  import android.widget.RadioButton;
                  import android.widget.RadioGroup;
                  import android.widget.Spinner;
                  import android.widget.TextView;
                  import android.widget.Toast;
                  spinnerAppellation = ((Spinner)findViewById(R.id.spinnerAppellation));
                  		spinnerAppellation.setOnItemSelectedListener(new OnItemSelectedListener() {
                  		    @Override
                  		    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id)
                  		    {
                  		    	SpinnerAppellation_Check();
                  		    }
                  
                  		    @Override
                  		    public void onNothingSelected(AdapterView<?> parentView) {
                  		        // your code here
                  		    }
                  		});



                  private void RemplissageSpinner()
                  	{
                  		try
                          {
                  		//Lancement de la requete
                          RequeteCde = "SELECT Appellation FROM APPELLATION WHERE Actif_Appellation = 1";
                          connexion(RequeteCde);
                          
                          //Création de la ArrayList puis remplissage de celle-ci
                          mylist.add("Toutes les appellations");
                                  
                          if (lecture != null)
                  		{
                  	        do
                  	        { 
                  	        	mylist.add(lecture.getString(0));
                  	        	
                  	        }while(lecture.moveToNext()); 
                  		}
                          }
                          catch (SQLException g)
                  	    {
                  	    	Toast.makeText(this, "La base de données est vide. Veuillez changer les paramètres et relancez l'application.", Toast.LENGTH_LONG).show();
                  	    	estConnecte = false;
                  	    }
                  	    finally //Déconnexion
                  	    {
                  	    	if (estConnecte == true)
                              {
                                  connect.close();
                              }
                  	    }
                          
                          //On attribut à notre spinner un adapter
                  		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.gabarit_spinner,mylist);
                  		
                          //ArrayAdapter<String> adapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_spinner_dropdown_item, mylist);
                          
                          spinnerAppellation.setAdapter(adapter);
                  	}

                  -
                  Edité par Frieurieud 10 mai 2013 à 16:22:19

                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 mai 2013 à 16:12:27

                    Et c'est en cliquant sur un bouton (me permettant d'avoir un affichage de texte anglais/français) qui doit selectionner la ligne 0 de mon spinner.

                    Les lignes 22 et 40 sont 2 essais differents et ne fonctionne pas, en fait il ne se passe rien.

                    BoutonPays = ((ImageButton)findViewById(R.id.buttonPays));
                    		BoutonPays.setOnClickListener(new OnClickListener()
                    		{
                    			@Override
                    			public void onClick(View v)
                    			{
                    				if (ClassParametres.langueFR == true)
                    				{
                    					BoutonPays.setImageResource(R.drawable.drapeau_anglais_rond);
                    					ClassParametres.langueFR = false;
                    					TexteTitre.setText(R.string.uk_filtre_Titre);
                    					TexteCouleur.setText(R.string.uk_filtre_couleur);
                    					TexteCentilisation.setText(R.string.uk_filtre_centilisation);
                    					TexteTarifs.setText(R.string.uk_filtre_tarif);
                    					TexteAppellation.setText(R.string.uk_filtre_appellation);
                    					textNotreSelection.setText(R.string.uk_filtre_notreSelection);
                    					textVinsDuMois.setText(R.string.uk_filtre_VinsDuMois);
                    					if (estConnecte == true)
                    					{
                    						RadioButtonTarif[0].setText("All prices");
                    						mylist.set(0, "All appellations");
                    						spinnerAppellation.setSelection(0);
                    					}
                    				}
                    				else
                    				{
                    					BoutonPays.setImageResource(R.drawable.france);
                    					ClassParametres.langueFR = true;
                    					TexteTitre.setText(R.string.fr_filtre_Titre);
                    					TexteCouleur.setText(R.string.fr_filtre_couleur);
                    					TexteCentilisation.setText(R.string.fr_filtre_centilisation);
                    					TexteTarifs.setText(R.string.fr_filtre_tarif);
                    					TexteAppellation.setText(R.string.fr_filtre_appellation);
                    					textNotreSelection.setText(R.string.fr_filtre_notreSelection);
                    					textVinsDuMois.setText(R.string.fr_filtre_VinsDuMois);
                    					if (estConnecte == true)
                    					{
                    						RadioButtonTarif[0].setText("Tous les prix");
                    						mylist.set(0, "Toutes les appellations");
                    						spinnerAppellation.setSelection(0, true);
                    					}
                    				}
                    			}
                    		});

                    Si vous voulez des explications je suis là

                    -
                    Edité par Frieurieud 10 mai 2013 à 16:27:01

                    • Partager sur Facebook
                    • Partager sur Twitter
                      10 mai 2013 à 16:57:56

                      Ah mais si tu as un Adapter pourquoi cela ne marcherais t'il pas ??

                      spinner.setSelection(pos);
                      adapter.notifyDataSetChanged();



                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 mai 2013 à 17:38:51

                        Bon alors j'ai testé ce que tu m'as dit et inséré dans le code comme ceci dans la partie FR comme dans la partie UK (voir BoutonPays plus haut)

                        if (estConnecte == true)
                        					{
                        						RadioButtonTarif[0].setText("All prices");
                        						mylist.set(0, "All appellations");
                        						spinnerAppellation.setSelection(0);
                        						adapter.notifyDataSetChanged();
                        					}


                        Seul la version FR se replace à la ligne 0. Je m'explique :

                        - Je suis sur un affichage en anglais

                        - Je selectionne une ligne au hasard dans mon spinner (je vérifie également que ma ligne 0 du spinner a pour texte "All appellation"

                        - Je clique sur mon bouton pour basculer le texte en FR

                        La ligne 0 avec le texte "Toutes les appellations" s'affiche. Bon la c'est Ok

                        Mais si je recommence pour basculer en anglais, la ligne reste sur la selection que j'ai faite au hasard

                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 mai 2013 à 18:55:09

                          Peux tu nous montrer avec des captures d'ecrans ton appli et nous expliquer en quoi le comportement est anormal et ce que tu attends car la je ne comprends rien (fin de semaine ??).

                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mai 2013 à 22:26:40

                            En tout cas merci d'essayer de m'aider.

                            Alors nous avons d'abord cette vue :

                            Pour info, lorsque je passe en anglais, le contenu de la ligne 0 change: elle passe d'une chaine de caractères "Toutes les appellation" à "All appellations" par cette commande

                            mylist.set(0, "All appellations");

                            et ça cela fonctionne.

                            Bon donc ensuite en cliquant sur le bouton nous devrions avoir cette vue: 

                            C'est ce que je voudrais sauf que mon spinner laisse afficher "Toutes les appellations". La vue du dessus montre ce que le spinner devrai faire.

                            -
                            Edité par Frieurieud 10 mai 2013 à 22:29:54

                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 mai 2013 à 23:03:01

                              Bonjour,

                              Essaye ça

                              RadioButtonTarif[0].setText("All prices");
                                                      mylist.set(0, "All appellations");
                                                      adapter = new ArrayAdapter<String>(this, R.layout.gabarit_spinner,mylist);
                                                      spinnerAppellation.setAdapter(adapter);
                                                      spinnerAppellation.setSelection(0);



                              -
                              Edité par alikyo 10 mai 2013 à 23:03:57

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 mai 2013 à 7:47:24

                                Les ecrans que tu nous a envoye c'est avec ca :

                                spinner.setSelection(pos);
                                adapter.notifyDataSetChanged();

                                Sinon essaye de mettre cette ligne devant les deux autres :

                                spinner.setSelection(Adapter.NO_SELECTION);




                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 mai 2013 à 8:00:00

                                  Tu t'y prends mal pour gerer l'internationalisation il y a mieux : voila un exemple qui montre comment faire

                                  package com.exemple.localizationupdater;
                                  
                                  import java.util.Locale;
                                  
                                  import android.app.Activity;
                                  import android.content.Intent;
                                  import android.content.res.Configuration;
                                  import android.os.Bundle;
                                  import android.util.Log;
                                  import android.view.View;
                                  import android.widget.AdapterView;
                                  import android.widget.AdapterView.OnItemSelectedListener;
                                  import android.widget.ArrayAdapter;
                                  import android.widget.Spinner;
                                  
                                  public class LocalizationUpdaterActivity extends Activity {
                                  
                                  	/** Called when the activity is first created. */
                                  	@Override
                                  	public void onCreate(Bundle savedInstanceState) {
                                  		super.onCreate(savedInstanceState);
                                  		setContentView(R.layout.main);
                                  
                                  		Spinner spinner = (Spinner) findViewById(R.id.spinner1);
                                  		spinner.setPrompt("select language");
                                  
                                  		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                                  				android.R.layout.simple_spinner_item, languages);
                                  		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                  		spinner.setAdapter(adapter);
                                  
                                  		spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
                                  
                                  			public void onItemSelected(AdapterView<?> arg0, View arg1,
                                  					int arg2, long arg3) {
                                  				Configuration config = new Configuration();
                                  				switch (arg2) {
                                  				case 0:
                                  					config.locale = Locale.ENGLISH;
                                  					break;
                                  				case 1:
                                  					config.locale = Locale.ITALIAN;
                                  					break;
                                  				case 2:
                                  					config.locale = Locale.FRENCH;
                                  					break;
                                  				default:
                                  					config.locale = Locale.ENGLISH;
                                  					break;
                                  				}
                                  				getResources().updateConfiguration(config, null);
                                  			}
                                  
                                  			public void onNothingSelected(AdapterView<?> arg0) {
                                  				// TODO Auto-generated method stub
                                  				
                                  			}
                                  		});
                                  
                                  
                                  	}
                                  	
                                  	public void onClick(View v) {
                                  		startActivity(new Intent(getBaseContext(), TextActivity.class));
                                  	}
                                  	private String[] languages = { "Inglese", "Italiano", "Francese" };
                                  }


                                  Voici les fichiers de ressources :

                                  <?xml version="1.0" encoding="UTF-8"?>
                                  -<resources> <string name="hello">bonjour tout le monde, LocalizationUpdaterActivity!</string> <string name="text">C"'"était à la moitié du trajet de la vie; Je me trouvais au fond d"'"un bois sans éclaircie, Comme le droit chemin était perdu pour moi....</string> </resources>

                                  et la version englaise

                                  <?xml version="1.0" encoding="UTF-8"?>
                                  -<resources> <string name="hello">Hello World, LocalizationUpdaterActivity!</string> <string name="app_name">LocalizationUpdater</string> <string name="text">Midway upon the journey of our life I found myself within a forest dark, For the straightforward pathway had been lost....</string> </resources>

                                  Comme tu vois c'est le meme id. Mais si la Configuration.Locale change alors les textes changeront. Pas besoin de faire un

                                  if (ClassParametres.langueFR == true)

                                  Je te conseilles donc de creer dans tes dossiers ressources deux dossiers pour les langues et de mettre le meme xml avec les meme id sauf que le texte changera en fonction des langues.

                                  Voici une image qui te montre comment faire :



                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 mai 2013 à 14:19:21

                                    Salut,

                                    j'ai essayer tes différentes astuces mais rien n'y fait. Je sens que je vais laisser tomber (momentanément) ma sélection de ligne dans un spinner pour me concentrer sur un autre problème plus important pour mon projet: JCIFS (je vais ouvrir un autre post à son sujet).

                                    Sinon merci du tuyau pour la traduction je vais également m'y pencher. Ce sera plus propre que mon bazar.

                                    En tout cas merci pour tout, ta patience et ton aide. :ange:

                                    Lors des évolutions sur ces 2 sujets (la traduction et la sélection), je remonterais ce post afin d'y ajouter les avancements.

                                    A bientôt

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Android -Sélectionner une ligne connu d'un spinner

                                    × 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