Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ignore OnItemSelectedListener firing on create

I'm creating a spinner and I've added an OnItemSelectedListener to it. However I've noticed that it fires on create. Now I was wondering if there was a way to ignore/discard it.

I know I could use a boolean value, but that's a bit "dirty".

like image 422
user211992 Avatar asked Mar 03 '10 18:03

user211992


2 Answers

Here is my solution.

I need to ignore the first item selection event because there is a dependency between the Route Grade Spinner and the Route Checkbox.

And all my controls are setup based on a previous visit to the activity.

// Used to count the number of times the onItemSelected gets fired
private int mGradeSelectionCount = 0;

private void attachHandlers() {
    OnItemSelectedListener gradeRangeSelectionMadeListener;
    gradeRangeSelectionMadeListener = new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
            // If the counter is 0 then we can assume that it is android firing the event
            if (mGradeSelectionCount++ < 1) {
                return;
            }
            if (mCmbGradeFrom.getSelectedItemPosition() == 0) {
                // Uncheck the Route checkbox
                mChkTypeRoute.setChecked(false);
            } else {
                // Check the Route checkbox
                mChkTypeRoute.setChecked(true);
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // Dont care, keep the same values as before

        }
    };
    mCmbGradeFrom.setOnItemSelectedListener(gradeRangeSelectionMadeListener);
    mChkTypeRoute.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (!isChecked) {
                mCmbGradeFrom.setSelection(0);
                mCmbGradeTo.setSelection(0);
            }
        }
    });
}
like image 85
concept Avatar answered Sep 19 '22 11:09

concept


This may help you.

@Override  
public void onItemSelected( AdapterView<?> parent, View view, int position, long id)
{
    if(view!=null &&  view.getId()!=0){
        //do your code here to avoid callback twice 
    }
}
like image 22
Dinesh Sharma Avatar answered Sep 17 '22 11:09

Dinesh Sharma