Gimmy88
Gimmy88

Reputation: 305

Android - How to get the selected item value from a spinner and put it into a string?

i read many similar questions on this thread, but none of them help me... This is my 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();

}

I declare imc_met as public String imc_met;. The problem is that imc_met does not contain the value of the selected item of the spinner, but it's null...

Where's the problem?

Thx in advance.

Upvotes: 10

Views: 97890

Answers (6)

Isras
Isras

Reputation: 1

Try this code in your onCreate() method:

spinner.setOnItemSelectedListener(this);

Upvotes: -2

If spinner isn't define in onCreate() method then have to use this:

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

Upvotes: 0

Yoshi
Yoshi

Reputation: 19

is

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

not

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

Upvotes: 2

int position = Arrays.asList(getResources().getStringArray(R.array.country_value_array)).indexOf(address.getCountry());

This will get index by the value.

Upvotes: 1

RobinHood
RobinHood

Reputation: 10969

Use:

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

Instead:

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

Updated:

Seem you assigning Listener to your spinner not in correct way, do something like below:

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

            }
        });

Upvotes: 34

Linga
Linga

Reputation: 10573

Try this:

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

I'm sorry. I forgot

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

Upvotes: 7

Related Questions