2015-01-19 5 views
7

사진과 텍스트의 ListView입니다.Android Espresso 목록보기 상품보기

onData(hasToString(startsWith("Item Text"))) 
      .inAdapterView(withId(R.id.cardsGridView)) 
      .perform(click()); 

내가 Adapter의 위치를 ​​사용하여 ListView을 클릭 수, 일치 또는 startWith없이 : 내가 항목을 클릭 할 때, 나는 다음과 같은 코드를 사용

android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.cifrasoft.telefm:id/cardsGridView' matches multiple views in the hierarchy. 
Problem views are marked with '****MATCHES****' below. 

오류 얻을?

+3

이는 뷰 계층 구조에서 명명 된 ID가있는 여러 개의 뷰가 있음을 의미합니다. 전체 오류 메시지를 게시 할 수 있습니까? – haffax

+1

예, 물론입니다. 하지만 전체 오류는 너무 길다. http://pastebin.com/eahDGDMb – rz0

+2

전체 계층 구조를 보면 ViewPager에 ID cardsGridView가있는 AdapterView가있는 세 개의 페이지가있는 ViewPager가있는 것으로 보입니다. 따라서 하나의 AdapterView 인 ViewPager와 다른 중첩 된 AdapterView 인 ListView가 있습니다. 작동 할 수있는 것은 Adapter.getView 개별 ID 또는 태그에서 반환 된 Views를 제공하고 inID와 함께 inAdapterView() 호출에서 isDescendantOf() 일치 프로그램을 사용하는 것입니다. – haffax

답변

9

atPosition()으로 시도하십시오. 예 :

onData(hasToString(startsWith("Item Text"))) 
      .inAdapterView(withId(R.id.cardsGridView)).atPosition(0) 
      .perform(click()); 

색인 0을 사용하면 발견 된 첫 번째 일치하는보기를 클릭합니다.