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

时间:2012-03-04 08:36:48

标签: android testing spinner

我有一个测试,我在Spinner上测试一个OnItemSelectedListener。当测试>的项目时它很有用。但似乎我无法测试第一项。

我当前的实现,如果我选择索引为>的项目,则有效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);

        }
    });

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

提前致谢

罗兰

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

3 个答案:

答案 0 :(得分:7)

使用

spinner.setSelection(0,true);

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

答案 1 :(得分:6)

更多"透明"方式:

task assembleForTest(type: Sync) {
    fileMode = 0775
    from ("scripts") {
        include "**/*.cgi"
        filter(org.apache.tools.ant.filters.ReplaceTokens, 
        tokens: [programName: programName, 
                 version: version, 
                 dbServer: dbServerTest,
                 deployDir: deployDirTest])
    }
    from files("scripts/" + programName + ".cgi") 
    from files("build/libs/" + programName + "-" + version + ".jar")
    into ("build/" + programName)   
}

*第二个参数用于选择动画

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

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

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

     Spinner.setAdapter(...); 

&安培; for OnItemSelectedListener()不要激活

答案 2 :(得分:0)

查看开发者指南中的SpinnerTest示例应用程序。它实际上是向活动发送击键。