Search code examples
androidandroid-viewpagerandroid-spinner

How to implement a Spinner in ViewPager2


How to setup onItemSelected for a spinner in ViewPager2.

I've set up the spinner in the ViewHolder() but can't figure out how to implement the @Override onItemSelected.

ViewPager2

ViewPagerAdapter extends RecyclerView.Adapter<ViewPagerAdapter.ViewHolder> {
    Context mContext;

    ViewPagerAdapter(Context context) {
        this.mContext = context;
    }

ViewHolder

public class ViewHolder extends RecyclerViewViewHolder {
    private Spinner mSpinner;

    ViewHolder(View itemView) {
        mSpinner = itemView.findViewById(R.id.mySpinner);
        ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(mContext, R.array.myArray, android.R.layout.simple_spinner_item);
        spinnerAdapter.setDropDownViewResrouce(android.R.layout.simple_spinner_dropdown_item);
       mSpinner.setAdapter(spinnerAdapter);
       mSpinner.setOnItemSelectedListener((AdapterView.OnItemSelectedListener)mContext);

OnItemSelected ##

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
   Log.d(LOG_TAG, "Spinner Changed");
}

I would expect to see the "Spinner Changed" entry in the log after selecting a new spinner item.


Solution

  • According to what you say,

    I get the following error when trying to run the app, error: method does not override or implement a method from a supertype.

    Have you tried

    mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
       Log.d(LOG_TAG, "Spinner Changed");
    }
    });