How to select first item of a spinner in a test

我是研究僧i 提交于 2019-12-12 10:42:55

问题


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.


回答1:


Use

spinner.setSelection(0,true);

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




回答2:


more "transparent" way:

     Spinner.setSelection(Adapter.NO_SELECTION, false);**

*second argument is for selection animation

**this should be called after:

     Spinner.setAdapter(...); 

or any kind of methods that is involving Spinner.setSelection() for example :

    Adapter.notifyDataSetChanged(); 

& for OnItemSelectedListener() not to fire up




回答3:


Look at the SpinnerTest sample application in the Developer Guide. It actually sends keystrokes to the activity.



来源:https://stackoverflow.com/questions/9553496/how-to-select-first-item-of-a-spinner-in-a-test

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!