Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to select first item of a spinner in a test

I have a tests where I test an OnItemSelectedListener on a Spinner. It works great when testing items that is > 0. But it seems like I can't test the first item.

My current implementation that works if I select items with index > 0 looks like this.

final Addpointer addPointer = getActivity();

    addPointer.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            EditText address = (EditText) addPointer.findViewById(R.id.address);
            address.setText("a");
            Spinner spinner = (Spinner) addPointer.findViewById(R.id.intOrHex);
            spinner.setSelection(0);
            View view = (View)  spinner.getChildAt(0);
            long id = spinner.getAdapter().getItemId(0);
            spinner.performItemClick(view, 0, id);

        }
    });

What do I need to do to get the test to "select" the first item?

Thanks in advance

Roland

Answer: 1) Rahul garg about setting "animate" was the key to solve the problem. 2) But you can't trigger onSelectionChanged unless the selection actually changed (0 was initial state so I needed to set it to one before I set it back to zero.

like image 237
Roland Avatar asked Mar 04 '12 08:03

Roland


1 Answers

Use

spinner.setSelection(0,true);

The second parameter will actually animate the selection to the 0 index.

like image 103
Rahul garg Avatar answered Nov 13 '22 07:11

Rahul garg