How do I get a string from the setOnItemSelectedListener method?
I’m new to Android and I’m trying to get a string from a spinner . I did some research but couldn’t find anything useful. It works without trying to get the String code. Here is the code that works:
assert staticSpinner2 != null;
staticSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String spinnerLanguage2 = staticSpinner2.getSelectedItem().toString();
}
public String getSpin(String spinnerLanguage2) {
return spinnerLanguage2;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
I tried using the getter method like this, but I didn’t get any errors :
assert staticSpinner2 != null;
staticSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String spinnerLanguage2 = staticSpinner2.getSelectedItem().toString();
}
public String getSpinnerString(String spinnerLanguage2) {
return spinnerLanguage2;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
I’m trying to set this string to TextView :
assert staticSpinner2 != null;
staticSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String spinnerLanguage2 = staticSpinner2.getSelectedItem().toString();
}
public String getSpinnerString(String spinnerLanguage2) {
return spinnerLanguage2;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
MainActivityClassName AnObject = new MainActivityClassName();
text.setText(AnObject.getSpinnerString());
I get an error message “Unable to resolve method getSpin()”. I do realize that I didn’t pass any arguments to the method, but I don’t know how to do this here. I appreciate any help or any other suggestions that solve the problem differently. Thanks in advance.
If it helps, here’s the full code:
public class MainActivity extends AppCompatActivity {
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
text = (TextView) findViewById(R.id.textView);
spinner 1
final Spinner staticSpinner1 = (Spinner) findViewById(R.id.spinner1);
Create an ArrayAdapter using the string array and a default spinner
ArrayAdapter<CharSequence> staticAdapter1 = ArrayAdapter
.createFromResource(this, R.array.lang,
android. R.layout.simple_spinner_item);
Specify the layout to use when the list of choices appears
staticAdapter1
.setDropDownViewResource(android. R.layout.simple_spinner_dropdown_item);
Apply the adapter to the spinner
staticSpinner1.setAdapter(staticAdapter1);
spinner 2
final Spinner staticSpinner2 = (Spinner) findViewById(R.id.spinner2);
staticSpinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
String spinnerLanguage = staticSpinner1.getSelectedItem().toString();
switch (spinnerLanguage) {
case "Afrikaans":
Create an ArrayAdapter using the string array and a default spinner
ArrayAdapter<CharSequence> staticAdapterAF = ArrayAdapter
.createFromResource(getBaseContext(), R.array.af,
android. R.layout.simple_spinner_item);
Specify the layout to use when the list of choices appears
staticAdapterAF
.setDropDownViewResource(android. R.layout.simple_spinner_dropdown_item);
Apply the adapter to the spinner
staticSpinner2.setAdapter(staticAdapterAF);
break;
case "French":
Create an ArrayAdapter using the string array and a default spinner
ArrayAdapter<CharSequence> staticAdapterFR = ArrayAdapter
.createFromResource(getBaseContext(), R.array.fr,
android. R.layout.simple_spinner_item);
Specify the layout to use when the list of choices appears
staticAdapterFR
.setDropDownViewResource(android. R.layout.simple_spinner_dropdown_item);
Apply the adapter to the spinner
staticSpinner2.setAdapter(staticAdapterFR);
break;
case "English":
Create an ArrayAdapter using the string array and a default spinner
ArrayAdapter<CharSequence> staticAdapterEN = ArrayAdapter
.createFromResource(getBaseContext(), R.array.en,
android. R.layout.simple_spinner_item);
Specify the layout to use when the list of choices appears
staticAdapterEN
.setDropDownViewResource(android. R.layout.simple_spinner_dropdown_item);
Apply the adapter to the spinner
staticSpinner2.setAdapter(staticAdapterEN);
break;
case "Turkish":
Create an ArrayAdapter using the string array and a default spinner
ArrayAdapter<CharSequence> staticAdapterTR = ArrayAdapter
.createFromResource(getBaseContext(), R.array.tr,
android. R.layout.simple_spinner_item);
Specify the layout to use when the list of choices appears
staticAdapterTR
.setDropDownViewResource(android. R.layout.simple_spinner_dropdown_item);
Apply the adapter to the spinner
staticSpinner2.setAdapter(staticAdapterTR);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
assert staticSpinner2 != null;
staticSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String spinnerLanguage2 = staticSpinner2.getSelectedItem().toString();
}
public String getSpin(String spinnerLanguage2) {
return spinnerLanguage2;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
MainActivity AnObject = new MainActivity();
text.setText(AnObject.getSpinnerString());
}
Solution
You can do this:
String selectedText = null;
staticSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedText = parent.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Now you can use the selectedText
variable to pass to any method you want. However, keep in mind that unless you select something in the spinner , its value is null
.