如何在Android Espresso中单击屏幕外的列表元素?

如何在Android Espresso中单击屏幕外的列表元素?,android,scrollto,android-espresso,Android,Scrollto,Android Espresso,我有一个id为“listview”的列表视图,其中显示了id为“bground”的30个项目。我可以通过以下方式轻松单击第一项: ViewInteraction item = onView( allOf(withId(R.id.bground), childAtPosition(withId(R.id.listview), 1), isDisplayed())); item.perform(click()); 但是如果我尝试单击第5个元素(仅在child

我有一个id为“listview”的列表视图,其中显示了id为“bground”的30个项目。我可以通过以下方式轻松单击第一项:

ViewInteraction item = onView(
    allOf(withId(R.id.bground),
        childAtPosition(withId(R.id.listview), 1),
        isDisplayed()));
item.perform(click());
但是如果我尝试单击第5个元素(仅在childAtPosition中使用索引5),我会得到RuntimeException,因为视图的区域不会显示给用户

好的,我首先要将元素滚动到屏幕上。我的密码中有没有

onView (...).perform(scrollTo()) 
onData (...).perform(scrollTo()) 
被拒绝,因为我必须使用onData。还有我的任何密码

onView (...).perform(scrollTo()) 
onData (...).perform(scrollTo()) 
导致不明确的ViewMatcherException

你知道如何使用scrollTo或者如何单击下面的元素吗

谢谢并致以最良好的问候
Gerhard

对于在列表视图中单击,我们应该使用onData而不是onView,尽管我在recycyler视图中使用

onView(withRecyclerView(RecycylerViewId).
                atPositionOnView(0, Viewtoclickinsiderecyclerview)).
                perform(scrollTo(), click());
在listview中,您可能只需要用onData替换onView

无论如何,您可以使用以下链接了解如何使用listview实现

来自google.githab.io的链接描述不匹配,因为我的视图不包含Map.class数据,并且适配器是ArrayAdapter,而不是SimpleAdapter;我不知道如何将该描述从映射类数据调整到我的数据。在布局检查器中,我可以看到listview包含几个LinearLayout框架,每个框架由两个AppCompatTextView组成。也许我可以通过识别文本或通过childAtPosition识别所需的视图;但我尝试的任何构造都失败了。现在我如何在我的案例中滚动?