2017-04-20 92 views
0

我有一个ID为“listview”的列表视图,显示ID为“bground”的30个项目。我可以轻松地点击的第一个项目:如何点击Android Espresso中显示外的列表元素?

ViewInteraction item = onView(
    allOf(withId(R.id.bground), 
     childAtPosition(withId(R.id.listview), 1), 
     isDisplayed())); 
item.perform(click()); 

但是,如果我尝试单击第5个元素(只使用指数5 childAtPosition),我得到的RuntimeException,因为视图的区域不显示给用户。

好吧,我首先必须将元素滚动到屏幕上。任何与我的编码

onView (...).perform(scrollTo()) 

被拒绝,因为我必须使用onData。和我的任何编码

onData (...).perform(scrollTo()) 

导致AmbiguousViewMatcherException。

任何想法如何使用scrollTo或如何点击下面的元素?

感谢和问候 格哈德

回答

0

的点击,我们都应该使用

onView(withRecyclerView(RecycylerViewId). 
       atPositionOnView(0, Viewtoclickinsiderecyclerview)). 
       perform(scrollTo(), click()); 

在使用昂达代替onView虽然我已经实现了类似的这种行为recycyler视图中列表视图listview可能你只需要用onData替换onView

无论如何,你可以使用下面的链接来知道如何使用listview实现 https://google.github.io/android-testing-support-library/docs/espresso/lists/

+0

来自google.githab.io的链接描述不匹配,因为我的视图不包含Map.class数据,而适配器是ArrayAdapter而不是SimpleAdapter;我不知道如何将Map类数据中的描述适用于我的数据。 在布局检查器中,我可以看到listview包含多个LinearLayout框架,每个框架由两个AppCompatTextView组成。 也许我可以通过识别文本或通过识别childAtPosition来识别所需的视图;但是任何我尝试过的构造都失败了。 现在我怎样才能在我的情况下滚动? – Gerhard

相关问题