Java – How do I get a string from the setOnItemSelectedListener method?

How do I get a string from the setOnItemSelectedListener method?… here is a solution to the problem.

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.

Related Problems and Solutions