2017-04-20 91 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

相關問題