2015-01-19 3 views
7

У меня есть ListView с изображениями и текстом. Когда я пытаюсь нажать пункт, я получаю ошибкуAndroid Espresso ListView click item

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. 

Я использую следующий код:

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

Могу ли я нажимаю ListView, используя позицию Adapter, без спичек или startWith?

+3

Это означает, что у вас есть несколько видов с именованным ID в иерархии представлений. Можете ли вы опубликовать все сообщение об ошибке? – haffax

+1

Да, конечно. Но полная ошибка слишком длинна.http: //pastebin.com/eahDGDMb – rz0

+2

От взгляда на всю иерархию кажется, что у вас есть ViewPager, который показывает несколько страниц с тремя из них, имеющих AdapterView с идентификационными картамиGridView. Таким образом, у вас есть один AdapterView, ViewPager, с другим вложенным адаптером, вашим ListView. Что может быть сделано, чтобы предоставить представления, возвращенные из отдельных идентификаторов или тегов Adapter.getView, и использовать сокет isDescendantOf() в вызове inAdapterView() вместе с withId. – haffax

ответ

9

Попробуйте использовать atPosition(). например

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

с индексом 0, он нажмет на первый совпадающий вид.

 Смежные вопросы

  • Нет связанных вопросов^_^