您可以尝试创建自定义
Matcher<View>
:
public static Matcher<View> hasItem(Matcher<View> matcher) {
return new BoundedMatcher<View, RecyclerView>(RecyclerView.class) {
@Override public void describeTo(Description description) {
description.appendText("has item: ");
matcher.describeTo(description);
}
@Override protected boolean matchesSafely(RecyclerView view) {
RecyclerView.Adapter adapter = view.getAdapter();
for (int position = 0; position < adapter.getItemCount(); position++) {
int type = adapter.getItemViewType(position);
RecyclerView.ViewHolder holder = adapter.createViewHolder(view, type);
adapter.onBindViewHolder(holder, position);
if (matcher.matches(holder.itemView)) {
return true;
}
}
return false;
}
};
}
onView(withId(...)).check(matches(hasItem(hasDescendant(withText(...)))))
或者如果您不需要自定义匹配器,也可以使用
RecyclerViewActions.scrollTo()
:
onView(withId(...)).perform(scrollTo(hasDescendant(withText(...))))