سؤال

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) {

    }
}
هل كانت مفيدة؟

المحلول

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) {

    }
}

نصائح أخرى

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top