Android: Spinner onItemSelect inflates another Spinner

I have a spinner with which onItemSelect I need to open another Spinner based on the selection in the first one. Here is the code ... I can inflate the first counter but nothing happens when I select a record

Spinner filterSpinner = new Spinner(SearchResultsActivity.this);
            filterSpinner.setPrompt("Filter By");
            ArrayAdapter<String> filterSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterSpinnerArray);
            filterSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterSpinner.setAdapter(filterSpinnerArrayAdapter);
            filterSpinner.performClick();
            filterSpinner.setOnItemSelectedListener(new FilterItemSelectedListener());

      

and here is the code to handle the counter onItemSelected

:

public class FilterItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        switch (pos) {
        case 0:

            Spinner filterBusSpinner = new Spinner(SearchResultsActivity.this);
            filterBusSpinner.setPrompt("Filter Buses By");
            ArrayAdapter<String> filterBusSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterByBusSpinnerArray);
            filterBusSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterBusSpinner.setAdapter(filterBusSpinnerArrayAdapter);
            filterBusSpinner.performClick();
            break;
        case 1:
            Spinner filterTimeSpinner = new Spinner(SearchResultsActivity.this);
            filterTimeSpinner.setPrompt("Filter By Time");
            ArrayAdapter<String> filterTimeSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterByBusSpinnerArray);
            filterTimeSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterTimeSpinner.setAdapter(filterTimeSpinnerArrayAdapter);
            filterTimeSpinner.performClick();
            break;
        }
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

      

Any help would be greatly appreciated ...

+3


source to share


1 answer


to my best knowledge, the spinner will not open unless drawn on the screen. so before filterTimeSpinner.performClick () you have to attach the new spinner to the existing layout.

but, i did something similer to your needs with context menu.



I register the context menu to the spinner (which can be designed to look like spinner lines if needed) and when an item is selected I open the context menu. (same effect right?)

hope this helps.
Vlad

0


source







All Articles