web-dev-qa-db-fra.com

Android - Comment obtenir la valeur de l'élément sélectionné à partir d'un spinner et la placer dans une chaîne?

j'ai lu beaucoup de questions similaires sur ce sujet, mais aucune d'entre elles ne m'aide .... ceci est mon code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Spinner spinner = (Spinner) findViewById(R.id.imc_spinner);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.imc_array, Android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    spinner.setAdapter(adapter);

}

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    // An item was selected. You can retrieve the selected item using

    imc_met = parent.getItemAtPosition(pos).toString();

}

Je déclare imc_met comme public String imc_met;. Le problème est que imc_met ne contient pas la valeur de l'élément sélectionné du compteur, mais c'est null ... 

Où est le problème?

Merci d'avance.

10
Gimmy88

Utilisation:

imc_met = Spinner.getSelectedItem (). toString ();

Au lieu:

imc_met = parent.getItemAtPosition (pos) .toString ();

Mis à jour:

Vous semblez assigner Listener à votre spinner de manière non correcte, procédez comme suit:

spin.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                String imc_met=spin.getSelectedItem().toString();

            }

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

            }
        });
31
RobinHood

Essaye ça:

imc_met=Spinner.getSelectedItem().toString();

Je suis désolé. j'ai oublié

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        imc_met=Spinner.getSelectedItem().toString();
        }
    }
7

est

imc_met=spinner.getSelectedItem().toString();

ne pas

imc_met=Spinner.getSelectedItem().toString();
2
Yoshi
int position = Arrays.asList(getResources().getStringArray(R.array.country_value_array)).indexOf(address.getCountry());

Cela va obtenir index par la valeur.

1
Ashok Chakravarthi

Si spinner n'est pas défini dans la méthode onCreate (), vous devez utiliser ceci:

String spinner_value = ((Spinner)findViewById(R.id.spinner1)).getSelectedItem().toString(); 
0