RecyclerViewActions.scrollTo()
मैचों। और काम करने के लिए scrollTo()
के लिए, आपको एक मैचर प्रदान करने की आवश्यकता है जो विशिष्ट रूप से ItemView
की पहचान करे।
आपकी वर्तमान मिलान एस्प्रेसो बताता है एक ViewHolder कि एक itemView
के रूप में एक TextView
से फुलाया गया था करने के लिए स्क्रॉल करने के लिए। जो हो सकता है, लेकिन आम तौर पर आपके पास कुछ ViewGroup
कार्रवाई होती है ताकि दृश्य धारकों को जिस तरीके से आप देखना चाहते हैं उन्हें शैलीबद्ध कर सकें।
आप अपने scrollTo()
Matcher बदलते हैं, तो hasDescendant(withText("Text XYZ"))
करने के लिए सभी नेस्टेड लेआउट के लिए खाते (यदि वहाँ एक से अधिक)।
यह भी ध्यान रखें, क्योंकि आप भी आइटम क्लिक करने की कोशिश कर रहे हैं - आप एक ही perform()
में यह नहीं कर सकते क्योंकि वह वर्तमान ViewInteraction
लिए क्लिक करें, जो इस मामले आईडी R.id.recycler_view
के साथ एक RecyclerView
में है भेज देंगे। उसी प्रदर्शन में ऐसा करने से आप RecyclerView
पर मध्य पर क्लिक करते हैं, न कि जिस आइटम को आपने स्क्रॉल किया था।
इसे हल करने के लिए आपको किसी अन्य आइटम को स्क्रॉल करने के लिए उपयोग किए जाने वाले मैचर के साथ onView()
की आवश्यकता है या RecyclerView.actionOnItem()
का उपयोग करें।
एक और onView()
बयान के मामले में, hasDescendant(withText("Text XYZ"))
, आप असफल क्योंकि यह उस TextView (viewholder, recyclerview, viewgroup कि recyclerview और इतने पर रखती है) वे सभी इस विशेष वंशज है के रूप में के सभी माता-पिता मिल जाएगा होगा। यह आपको ItemView
मैचर को अधिक सटीक और सभी नेस्टेड लेआउट के लिए खाता बनाने के लिए मजबूर करेगा। इन परिस्थितियों में मेरा सामान्य मटर पर withChild()
है, लेकिन यह आपके लिए अलग हो सकता है।
स्रोत
2016-09-04 00:36:35
काम नहीं कर रहा है - त्रुटि लॉग कृपया – piotrek1543
आप देख रहे हैं कि उस दृश्य को स्क्रॉल करने से पहले प्रदर्शित किया गया है। – denys
@denys ckeck वास्तविक पुनर्चक्रण के लिए है। इसे तब तक कोई फर्क नहीं पड़ता जब तक कि रीसाइक्लिंगव्यू वास्तव में प्रदर्शित नहीं होता है। –