Question

My application is not initiating the onItemSelected method, when I change my spinner view. It should work fine, but it is not functioning.

class UnitConverter extends Fragment implements OnItemSelectedListener{
    Spinner spinner, spinner2;
    ArrayAdapter<CharSequence> adapter, kilogramAdapter, metreAdapter;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater,container,savedInstanceState);
        View v = inflater.inflate(R.layout.activity_converter, container, false);
        spinner = (Spinner) v.findViewById(R.id.SI_spinner);
        spinner2 = (Spinner) v.findViewById(R.id.spinner1);

        adapter = ArrayAdapter.createFromResource(getActivity(), R.array.si_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        metreAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.metre_array, android.R.layout.simple_spinner_item);
        metreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        kilogramAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.kilogram_array, android.R.layout.simple_spinner_item);
        kilogramAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);
        spinner2.setAdapter(metreAdapter);
        return v;
    }

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        spinner2.setAdapter(kilogramAdapter);
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }
}
Was it helpful?

Solution

You need to register the listener with your spinner like below code

if you are implementing the OnItemSelectedListener like you are doing in the code provided by you. then register the listener like this

spinner.setOnItemSelectedListener(this);

or if you are creating a new class implementing the OnItemSelectedListener interface.

then you can register that class with your spinner view like this

 spinner.setOnItemSelectedListener(new MyCustomListener());


private class MyCustomListener implements OnItemSelectedListener
{
 @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
        // Write your logic what you want to do on selecting the item
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }
}

OTHER TIPS

You need to set the Spinner Item selected Listener

spinner.setOnItemSelectedListener(this);

When you going to use Listview or Spinner,you want to fire the selection use below code

spinner.setOnItemSelectedListener(this);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top