I am trying to pass the value item selected in the Spinner array to an API call request.
I am unable to get the value to outside of setOnItemSelectedListener(new AdapterView.OnItemSelectedListener().
I have tried to use most of the options provided in the Stack overflow answers, but when I try to print the String, it shows as null.
What is the correct way to get the string variable outside so that I can send it as a value via a request, or even print it.
public class Profile2 extends AppCompatActivity implements View.OnClickListener {
private String gender;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//final String gender = (String) genderspinner.getSelectedItem().toString().trim();
// Spinner gender = (Spinner) findViewById(R.id.genderspinner);
//final EditText etGender = (EditText) findViewById(R.id.etGender);
final Spinner genderspinner = findViewById(R.id.genderspinner);
//String gender;
ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.gender, R.layout.support_simple_spinner_dropdown_item);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
genderspinner.setAdapter(arrayAdapter);
genderspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String gendervalue = parent.getItemAtPosition(position).toString();
// Object item = parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
final String gender = String.valueOf(genderspinner.getSelectedItem());
Log.i("TAG", "gender here : "+gender);
// when I run the log, it is always empty.
//final String gender = String.valueOf(genderspinner.getSelectedItem());
// genderspinner.setOnItemSelectedListener(this);
updateprofile(gender)
});
}
private void updateprofile(gender) {
// API call which sends the gender data
}
}
Declare a global variable
to store spinner's selected value
. Try below code .
String gendervalue="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//final String gender = (String) genderspinner.getSelectedItem().toString().trim();
// Spinner gender = (Spinner) findViewById(R.id.genderspinner);
//final EditText etGender = (EditText) findViewById(R.id.etGender);
final Spinner genderspinner = findViewById(R.id.genderspinner);
//String gender;
ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this,R.array.gender, R.layout.support_simple_spinner_dropdown_item);
arrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
genderspinner.setAdapter(arrayAdapter);
genderspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
gendervalue = parent.getItemAtPosition(position).toString();
// Object item = parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
Log.i("TAG", "gender here : "+gendervalue);
updateprofile(gendervalue)
});
}
You can check logs now , it will show you the selected value.