Android 使用Espresso按其在ViewPager中的位置匹配RecyclerView

Android 使用Espresso按其在ViewPager中的位置匹配RecyclerView,android,android-recyclerview,android-viewpager,android-espresso,Android,Android Recyclerview,Android Viewpager,Android Espresso,我有一个带有3个项目的ViewPager,每个项目都使用相同的片段,因此使用相同的回收器视图。我的视图层次结构是这样的 -ViewPager ----LinearLayout (id = ll) --------RecyclerView (id = rv) ----LinearLayout (id = ll) --------RecyclerView (id = rv) ----LinearLayout (id = ll) --------RecyclerView (id = rv)

我有一个带有3个项目的ViewPager,每个项目都使用相同的片段,因此使用相同的回收器视图。我的视图层次结构是这样的

-ViewPager  
----LinearLayout (id = ll) 
--------RecyclerView (id = rv) 
----LinearLayout (id = ll) 
--------RecyclerView (id = rv) 
----LinearLayout (id = ll)
--------RecyclerView (id = rv)
它们都具有相同的ID,因为它们是相同的布局


如何从视图层次结构中区分这3个相同的RecyclerViews

首先创建用于选择第i个匹配视图的匹配器:

public static <T> Matcher<T> result(final Matcher<T> matcher, final int i) {
    return new BaseMatcher<T>() {
        private int resultIndex = -1;
        @Override
        public boolean matches(final Object item) {
            if (matcher.matches(item)) {
                resultIndex++;
                return resultIndex == i;
            }
            return false;
        }

        @Override
        public void describeTo(final Description description) {
        }
    };
}

我很想知道为什么我的答案被否决了。。。
//select the second recycler view
int i = 1;
//then click on the first item of it
int itemPosition = 0;
onview(result(withId(R.id.rv), i)).perform(RecyclerViewActions.actionOnItemAtPosition(itemPosition, click()));