Sagar Acharya
Sagar Acharya

Reputation: 1871

How to programatically set entries of spinner in android?

I have made various string-arrays in the string.xml file and I have to set different arrays as entries for the spinner according to certain condition in Java. Is it possible or is database the only way to do so. Thanks in advance.

Upvotes: 17

Views: 18007

Answers (3)

adalpari
adalpari

Reputation: 3121

You need to use an adapter and populate with tha array in xml file.

Specify the name of your array in xml at createFromResource method (second parameter).

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

Upvotes: 21

Shudy
Shudy

Reputation: 7936

You have to extract your data from file:

String[] testArray = getResources().getStringArray(R.array.testArray);

Then, you have to inflate in the spinner:

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, testArray );
mySpinner.setAdapter(spinnerArrayAdapter);

Upvotes: 8

Nayan Srivastava
Nayan Srivastava

Reputation: 3725

You can start with using ArrayAdapter, it is a simple class to populate spinner items programmatically.

String data[];
//... do your stuff to get populate this array
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, data);
mySpinner.setAdapter(spinnerArrayAdapter);

You can also modify the view of dropdown items and customize them further by overriding this class.

Upvotes: 3

Related Questions