0

I want to retrieve a value from the spinner. Here is my code

AddCustomerAcitivity.java

public class AddCustomerActivity extends AppCompatActivity{
Spinner spinnerCustomer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_customer);

    Toolbar toolbar = (Toolbar) findViewById(R.id.add_customer_toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Add New Customer");

    fetchId();
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_category,
            android.R.layout.simple_spinner_item);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCustomer.setAdapter(adapter); 
}

private void fetchId() {
    spinnerCustomer = findViewById(R.id.spinner_customer);
}
}

String.xml

<string-array name="spinner_category">
    <item>Male</item>
    <item>Female</item>
</string-array>

acitivty_add_customer.xml

 <Spinner
    android:id="@+id/spinner_customer"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:layout_margin="10dp"/>

I am not using a database to fetch the value from spinner. I am fetching value using string array. I want its value in String.

AskNilesh
  • 67,701
  • 16
  • 123
  • 163

4 Answers4

2

Try this

String text = spinnerCustomer.getSelectedItem().toString();

Edit

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_category,
            android.R.layout.simple_spinner_item);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCustomer.setAdapter(adapter);



spinnerCustomer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selectedItemText = (String) parent.getItemAtPosition(position);
                // Notify the selected item text
                Toast.makeText
                        (getApplicationContext(), "Selected : " + selectedItemText, Toast.LENGTH_SHORT)
                        .show();
            }

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

            }
        });
Ratilal Chopda
  • 4,162
  • 4
  • 18
  • 31
2

You need to implement the AdapterView.OnItemSelectedListener interface after that, you can print your values from onItemSelected() method.

Sample code:

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{
    Spinner spinner;
    String[] sampleData = {
            "first",
            "second",
            "third",
            "fourth",
            "fifth"
    };

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

        spinner.setOnItemSelectedListener(this);
        ArrayAdapter aa = new ArrayAdapter(this, android.R.layout.simple_spinner_item, sampleData);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(aa);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Toast.makeText(getApplicationContext(), sampleData[i], Toast.LENGTH_LONG).show();
    }

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

    }
}
Abhay Tomar
  • 175
  • 1
  • 9
0

You can do it like this too.

spinnerCustomer=(Spinner)findViewById(R.id.spinner_customer);
String[] arrayOfStrings=getResources().getStringArray(R.array.spinner_category);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item,arrayOfStrings);

spinnerCustomer.setAdapter(adapter);
final Spinner finalSpinnerCustomer = spinnerCustomer;
finalspinnerCustomer.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id)
        {
            String item = ((TextView) view).getText().toString();  
        Toast.makeText(this,"Clicked"+ item.toString(), Toast.LENGTH_SHORT).show();
        }
});
Mohammed Farhan
  • 1,120
  • 8
  • 14
0

You have to setOnItemSelectedListener to your spinner to get the select event of the spinner. It will give you the selected position and you can get the value from your data source with the same position or index.

String[] categories = getResources().getStringArray(R.array.spinner_category);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, categories);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCustomer.setAdapter(adapter);
    spinnerCustomer.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            String selectedValue = categories[i];
            Toast.makeText(AddCustomerActivity.this, "selected value " + selectedValue, Toast.LENGTH_SHORT).show();
        }

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

        }
    });