How to find out if the user has pressed the spinner button in Android?

In my application, I dynamically create a spinner in code. I want to force the user to click on Spinner and change its value / content. Otherwise, the user will not be able to go to the next screen by clicking the "Next" button.

How to do it in Android? Anyone have an idea?

Thanks at Advance.

Rohan

+5
source share
8 answers

you can use this:

 if (spin.getSelectedItemPosition() < 0) {//Do something}

this means that the user has not selected anything.

+6
source

Let the first Spinner value look like "-please select-".

, , Item spinner "-please select-", , - ,

, .

+2

Intent Activity Click Listener spinner

0

..

 boolean isSelect = false;

, , isSelect = false. NEXT, isSelect true false.

.

0

, .

         spinner.setOnItemSelectedListener(new OnItemSelectedListener() {    
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                if (spinner.getSelectedItem().toString().equals("YourValue")) {
                    Intent yourIntent = new Intent(this,YourClassName.class);
                    startActivity(yourIntent);
                }
            }    
            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });
0

1. " -" 2. " " 3. " " 5.... 6..

String item=spinnerObject.getSelectedItem ();
    now check if("Select Something".equels(item)){
show some dialog to select anything from spinner
    }else{
send it to next screen
}
0

Use this code to test the spinner element .

both flags are taken at the class level (globally).

Boolean temp = false;
Boolean check = false;


spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            if(temp){
                check = true;
            }
            temp = true;
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
            check = false;
        }
});

button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            if(check){

                //perform when user select spinner item             
            }else{

                //put Dialog for alert please select spinner item 

            }
        }
}
0
source

I created a new Spinner class that encapsulates the above principles. But even then you need to call the correct method, notsetSelection

Same thing in gist

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;

/**
 * Used this to differentiate between user selected and prorammatically selected
 * Call {@link Spinner#programmaticallySetPosition} to use this feature.
 * Created by vedant on 6/1/15.
 */
public class Spinner extends android.widget.Spinner implements AdapterView.OnItemSelectedListener {

    OnItemSelectedListener mListener;

    /**
     * used to ascertain whether the user selected an item on spinner (and not programmatically)
     */
    private boolean mUserActionOnSpinner = true;

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        if (mListener != null) {

            mListener.onItemSelected(parent, view, position, id, mUserActionOnSpinner);
        }
        // reset variable, so that it will always be true unless tampered with
        mUserActionOnSpinner = true;
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        if (mListener != null)
            mListener.onNothingSelected(parent);
    }

    public interface OnItemSelectedListener {
        /**
         * <p>Callback method to be invoked when an item in this view has been
         * selected. This callback is invoked only when the newly selected
         * position is different from the previously selected position or if
         * there was no selected item.</p>
         *
         * Impelmenters can call getItemAtPosition(position) if they need to access the
         * data associated with the selected item.
         *
         * @param parent The AdapterView where the selection happened
         * @param view The view within the AdapterView that was clicked
         * @param position The position of the view in the adapter
         * @param id The row id of the item that is selected
         */
        void onItemSelected(AdapterView<?> parent, View view, int position, long id, boolean userSelected);

        /**
         * Callback method to be invoked when the selection disappears from this
         * view. The selection can disappear for instance when touch is activated
         * or when the adapter becomes empty.
         *
         * @param parent The AdapterView that now contains no selected item.
         */
        void onNothingSelected(AdapterView<?> parent);
    }

    public void programmaticallySetPosition(int pos, boolean animate) {
        mUserActionOnSpinner = false;
        setSelection(pos, animate);
    }

    public void setOnItemSelectedListener (OnItemSelectedListener listener) {
        mListener = listener;
    }

    public Spinner(Context context) {
        super(context);
        super.setOnItemSelectedListener(this);
    }

    public Spinner(Context context, int mode) {
        super(context, mode);
        super.setOnItemSelectedListener(this);
    }

    public Spinner(Context context, AttributeSet attrs) {
        super(context, attrs);
        super.setOnItemSelectedListener(this);
    }

    public Spinner(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        super.setOnItemSelectedListener(this);
    }

    public Spinner(Context context, AttributeSet attrs, int defStyle, int mode) {
        super(context, attrs, defStyle, mode);
        super.setOnItemSelectedListener(this);
    }
}
0
source

All Articles