Android: Create spinner programmatically from array
ArrayAdapter<String>
should work.
i.e.:
Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
(this, android.R.layout.simple_spinner_item,
spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
Create a spinner programmatically in Android
You need to add the Spinner
to a layout.
First create a container
for the Spinner
and then create the Spinner
and add it to your container
. Next set content of you Activity
to your container
.
This could be done like this, in your onCreate
method:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
LinearLayout layout = new LinearLayout(this);
ArrayList<String> spinnerArray = new ArrayList<String>();
spinnerArray.add("one");
spinnerArray.add("two");
spinnerArray.add("three");
spinnerArray.add("four");
spinnerArray.add("five");
Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);
layout.addView(spinner);
setContentView(layout);
}
EDIT:
Just to clarify: if the Spinner
isn't added to the content of the Activity
inside a layout, it isn't visible, so that's why you don't get any errors or anything, because there isn't any errors in your code, per se ;-)
android spinner and array adapter programmatically
Just create a custom ArrayAdapter and define how the spinner textview should look in that getDropDownView method of the adapter
public class CustomizedSpinnerAdapter extends ArrayAdapter<String> {
private Activity context;
String[] data = null;
public CustomizedSpinnerAdapter(Activity context, int resource, String[] data2)
{
super(context, resource, data2);
this.context = context;
this.data = data2;
}
...
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
if(row == null)
{
//inflate your customlayout for the textview
LayoutInflater inflater = context.getLayoutInflater();
row = inflater.inflate(R.layout.spinner_layout, parent, false);
}
//put the data in it
String item = data[position];
if(item != null)
{
TextView text1 = (TextView) row.findViewById(R.id.rowText);
text1.setTextColor(Color.WHITE);
text1.setText(item);
}
return row;
}
...
}
and set this adapter for the spinner
Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner);
final String[] data = getResources().getStringArray(
R.array.data);
final ArrayAdapter<String> adapter1 = new CustomizedSpinnerAdapter(
AddSlaveActivity.this, android.R.layout.simple_spinner_item,
data);
mySpinner.setAdapter(adapter1);
How to programatically set entries of spinner in android?
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);
How to populate a Spinner from String array
Use ArrayAdapter this way
your string array
String[] test=new String[]{"test1","test2"};
your ArrayAdapter
ArrayAdapter<String> gameKindArray= new ArrayAdapter<String>(MyActivityClass.this,android.R.layout.simple_spinner_item, test);
gameKindArray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
gameKind.setAdapter(gameKindArray);
Create Spinner Programmatically
In your onItemSelected
:
@Override
public void onItemSelected(AdapterView<?> parentview, View v,int position, long id)
{
Log.d("in select","yes");
}
The position
helps you to retrieve your selected item. Which, in your case, it should be:
option[position]
fill spinner android studio programmatically
The second argument of the ArrayAdapter constructor should be an int not a Spinner
Example call:
Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);
For more information on the possible constructor arguments see:
https://developer.android.com/reference/android/widget/ArrayAdapter.html
Related Topics
Offline Speech Recognition in Android (Jellybean)
Android - Sms Broadcast Receiver
How to Detect When an Android Application Is Running in the Emulator
Android: How to Check If a View Inside of Scrollview Is Visible
How to Add Manifest Permission to an Application
Clicking Urls Opens Default Browser
How to Lay Out Views in Relativelayout Programmatically
Android Push Notifications: Icon Not Displaying in Notification, White Square Shown Instead
How to Handle Dynamic Json in Retrofit
Android Listview Selector Color
Android: Unable to Add Window. Permission Denied for This Window Type
How to Specify Different Layouts for Portrait and Landscape Orientations