How to assert inside a RecyclerView in Espresso?

后端 未结 11 1824
故里飘歌
故里飘歌 2020-12-02 06:38

I am using espresso-contrib to perform actions on a RecyclerView, and it works as it should, ex:

onView(withId(R.id.recycler_view))
.perform(Rec         


        
11条回答
  •  我在风中等你
    2020-12-02 07:11

    In my case, it was necessary to merge Danny Roa's and riwnodennyk's solution:

    onView(withId(R.id.recyclerview))
    .perform(RecyclerViewActions.scrollToPosition(80))
    .check(matches(atPositionOnView(80, withText("Test Test"), R.id.targetview)));
    

    and the method :

    public static Matcher atPositionOnView(final int position, final Matcher itemMatcher,
            @NonNull final int targetViewId) {
    
        return new BoundedMatcher(RecyclerView.class) {
            @Override
            public void describeTo(Description description) {
                description.appendText("has view id " + itemMatcher + " at position " + position);
            }
    
            @Override
            public boolean matchesSafely(final RecyclerView recyclerView) {
                RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position);
                View targetView = viewHolder.itemView.findViewById(targetViewId);
                return itemMatcher.matches(targetView);
            }
        };
    }
    

提交回复
热议问题