2015-01-19 13 views
7

मेरे पास चित्र और पाठ के साथ ListView है। जब मैं आइटम क्लिक करने की कोशिश, मैं त्रुटि मिलती हैएंड्रॉइड एस्प्रेसो सूची दृश्य आइटम

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()); 

मैं Adapter की स्थिति का उपयोग कर सकते हैं पर क्लिक करें ListView, मैचों या startWith बिना?

+3

इसका मतलब है कि आपके पास दृश्य पदानुक्रम में नामित आईडी के साथ कई दृश्य हैं। क्या आप पूरा त्रुटि संदेश पोस्ट कर सकते हैं? – haffax

+1

हां, यकीन है। लेकिन पूर्ण त्रुटि बहुत लंबी है। Http://pastebin.com/eahDGDMb – rz0

+2

पूरे पदानुक्रम को देखने से ऐसा लगता है कि आपके पास एक व्यूपेजर है जो उनमें से तीन पृष्ठों को दिखाता है जिनमें आईडी कार्ड GridView के साथ एडाप्टर व्यू है। तो आपके पास एक एडाप्टर व्यू, व्यूपेजर है, एक और नेस्टेड एडाप्टर व्यू, आपकी लिस्ट व्यू के साथ। क्या काम कर सकता है Adapter.getView व्यक्तिगत आईडी या टैग से लौटाए गए दृश्यों को देखने के लिए और साथ में अपने इनएडाप्टर व्यू() कॉल में एक isDescendantOf() matcher का उपयोग करें। – haffax

उत्तर

9

atPosition() के साथ प्रयास करें। जैसे

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

इंडेक्स 0 के साथ, यह पहले मिलान किए गए दृश्य पर क्लिक करेगा।

संबंधित मुद्दे