web-dev-qa-db-fra.com

Comment définir un texte par défaut sur un spinner

Je souhaite que le compteur affiche le nom du pays même si une autre liste est sélectionnée. J'ai utilisé une vue de texte qui affiche l'élément sélectionné de la liste Spinner. Comme j'ai utilisé la méthode setselection pour définir le titre de spinner sur Country, EditText change également. J'ai parcouru divers sujets qui ont répondu à ce sujet mais je n'ai pas trouvé de réponse appropriée

Je joins mon code ci-dessous

MainActivity.Java

package com.example.spinner;

import Android.os.Bundle;
import Android.app.Activity;
import Android.database.Cursor;
import Android.view.Menu;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.AdapterView.OnItemSelectedListener;
import Android.widget.ArrayAdapter;
import Android.widget.Spinner;
import Android.widget.TextView;

public class MainActivity extends Activity {

    Spinner sp;
    TextView t;
    String[] country;
    int sp_position;
    String selected;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String myString = "Country"; 

        sp = (Spinner)findViewById(R.id.spinner1);
        t = (TextView)findViewById(R.id.textView1);
        country = getResources().getStringArray(R.array.spinner);
        ArrayAdapter<String> ad = new ArrayAdapter<String>(MainActivity.this, Android.R.layout.simple_spinner_dropdown_item,country);   
        sp_position = ad.getPosition(myString);
        sp.setAdapter(ad);
        ad.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);

        sp.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                selected = sp.getSelectedItem().toString();
                System.out.println(selected);
                setid();

            }

            private void setid() {
                sp.setSelection(sp_position);


            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

        t.setText(selected);

    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Mon fichier XML

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:layout_marginLeft="48dp"
        Android:layout_marginTop="69dp"
        Android:maxLines="4"
        Android:hint="Address" />

    <Spinner
        Android:id="@+id/spinner1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignRight="@+id/textView1"
        Android:layout_below="@+id/textView1"
        Android:layout_marginTop="72dp" 
        />

</RelativeLayout>

Mon STRINGS.XML

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Spinner</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string-array name="spinner">
        <item>Country</item>
        <item>India</item>
        <item>Russia</item>
        <item>USA</item>
        <item>France</item>
        <item>United Kingdom</item>
    </string-array>
<string name ="Country">Country</string>
</resources>

Mon exigence est celle qui est sélectionnée dans la fenêtre d'affichage, la vue Textview doit afficher l'élément sélectionné, mais cette dernière doit toujours afficher le premier élément ou dans mon cas, le pays

8
Saraschandraa

Utilisez ce code

déclaration

String selected, spinner_item;

spinner code 

sp.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            selected = sp.getSelectedItem().toString();
            if (!selected.equals("Country"))
                spinner_item = selected;
            System.out.println(selected);

            setid();
        }

        private void setid() {
            sp.setSelection(sp_position);
            t.setText(spinner_item);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });
12
spinner.setPrompt("Pick One");
8
raman rayat

Vous avez seulement besoin de 3 lignes de code pour cela:

(1) Déclarez une variable globale utilisée pour enregistrer et charger l'ID d'élément de rotation. Par global, je veux dire le déclarer juste après "public class MainActivity".

int mySpinner_selectedId; 

(2) Ensuite, ajoutez le code suivant APRÈS que l’utilisateur ait fait son choix. Un bon emplacement serait un bouton qui apparaît avec votre spinner.

mySpinner_selectedId = mySpinner.getSelectedItemPosition();

(3) Enfin, ajoutez le code suivant juste après "mySpinner.setAdapter (adapter);" pour charger le dernier élément sélectionné.

mySpinner.setSelection(mySpinner_selectedId);

Vous êtes les bienvenus.

2
Jun

Utilisez Android:Prompt="@string/select" dans spinner ....

2
Abhishek Patel

Faites-le de cette façon . Après avoir placé le textView setSelection sur la 0ème position de votre liste de spinner

sp.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
        int arg2, long arg3) {

        selected = sp.getSelectedItem().toString();
        System.out.println(selected);
        t.setText(selected);
        sp.setSelection(0);
    }
}
2
Manishika

Essayez de cette façon.

sp.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        //selected = sp.getSelectedItem().toString();
        //System.out.println(selected);
        if(arg2!=0)
           t.setText(sp.getSelectedItem().toString());
        sp.setSelection(0);
    }
}

J'espère que cela t'aidera. Laissez-moi savoir ce qui se passe. Je vous remercie.

1
Gunaseelan

Essaye ça:

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

           spinner.setSelection(pos);

    }
1
Richa

Dans la méthode onItemSelected, ajoutez ce code sp.setSelection(0);

0
jyomin

Je l'ai fait d'une manière simple  

  1. Ajoutez le texte par défaut au début ou à la fin de l'adaptateur (dans mon cas, fin) et définissez cet élément comme sélection par défaut . ---- Obtenez également la position de sélection par défaut, de sorte qu'aucune action ne sera effectuée dans setOnItemSelectedListener ().

    taskName.add("one");
    taskName.add("two");
    taskName.add("select a task");
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, Android.R.layout.simple_spinner_dropdown_item, taskName);
    binding.spnTask.setAdapter(adapter);
    binding.spnTask.setSelection(adapter.getPosition("select a task name"));
    final int defaultPosition = binding.spnTask.getSelectedItemPosition();
    
  2. Vérifier que la position sélectionnée est la position du texte par défaut 

      binding.spnTask.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    
            if (position == defaultPosition) {
                Toast.makeText(this, "No Action", Toast.LENGTH_SHORT).show();
            }else{  Toast.makeText(this, "Your Action" , Toast.LENGTH_SHORT).show();   }
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
    
        }
    });
    
0
Adarsh Vijayan P

essaye ça

Countryspinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            if (position == 0) {
                txtSpinner1.setHint("Select Country");
            } else {
                txtSpinner1.setText(CountryList.get(position));
            }

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            txtSpinner1.setHint("Select Country");
        }

    });
0
Invader