如何在测试中选择微调器的第一项

Rol*_*and 6 testing android spinner

我有一个测试,我在Spinner上测试一个OnItemSelectedListener.它在测试> 0的项目时效果很好.但似乎我无法测试第一项.

如果我选择索引> 0的项目,我当前的实现看起来像这样.

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);

        }
    });
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能让测试"选择"第一项?

提前致谢

罗兰

答案:1)关于设置"动画"的Rahul garg是解决问题的关键.2)但是你不能触发onSelectionChanged,除非选择实际改变了(0是初始状态所以我需要在将其设置回零之前将其设置为1).

Rah*_*arg 7

使用

spinner.setSelection(0,true);
Run Code Online (Sandbox Code Playgroud)

第二个参数实际上将选择动画为0索引.


cep*_*3us 6

更"透明"的方式:

     Spinner.setSelection(Adapter.NO_SELECTION, false);**
Run Code Online (Sandbox Code Playgroud)

*第二个参数是选择动画

**这应该在以下之后调用:

     Spinner.setAdapter(...); 
Run Code Online (Sandbox Code Playgroud)

或任何涉及Spinner.setSelection()的方法,例如:

    Adapter.notifyDataSetChanged(); 
Run Code Online (Sandbox Code Playgroud)

&对于OnItemSelectedListener()不要启动