我有一个ListView:

android-listview - 如何单击ListView中特定行位置的View-LMLPHP

我想单击ListView中的特定按钮。

如果要使用onData选择器进行选择:

onData(withId(R.id.button))
                .inAdapterView(withId(R.id.list_view))
                .atPosition(1)
                .perform(click());

我得到这个错误:
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id: com.example.application:id/list_view'.
...

我该如何解决?

最佳答案

onData()需要您感兴趣的项目的对象匹配器。如果您不关心适配器中的数据,则可以使用Matchers.anything()有效地匹配适配器中的所有对象。或者,您可以为商品创建一个数据匹配器(取决于适配器中存储的数据),然后将其传递以进行更确定的测试。

至于按钮-您正在寻找的是onChildsView()方法,该方法允许传递与onData().atPosition()中匹配的listitem后代的viewmatcher

结果,您的测试将如下所示:

    onData(anything()).inAdapterView(withId(R.id.list_view))
            .atPosition(1)
            .onChildView(withId(R.id.button))
            .perform(click());

07-28 02:15