2016-12-29 80 views

回答

0

您可以使用RecyclerViewActions

onView(withId(R.id.recyclerView)) 
    .perform(actionOnItemAtPosition(0, click())); 

包括到摇篮:

dependencies { 
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' 
    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0' 
} 
0

试试这个,我测试过相同

onView(withRecyclerView(R.id.recyclerView) 
     .atPositionOnView(position, R.id.childView)) 
     .perform(click()); 

方法调用

public static RecyclerViewMatcher withRecyclerView(final int recyclerViewId) { 
    return new RecyclerViewMatcher(recyclerViewId); 
} 

RecyclerViewMatcher

import android.content.res.Resources; 
import android.support.v7.widget.RecyclerView; 
import android.view.View; 
import org.hamcrest.Description; 
import org.hamcrest.Matcher; 
import org.hamcrest.TypeSafeMatcher; 

public class RecyclerViewMatcher { 

private final int recyclerViewId; 

public RecyclerViewMatcher(int recyclerViewId) { 
    this.recyclerViewId = recyclerViewId; 
} 

public Matcher<View> atPosition(final int position) { 
    return atPositionOnView(position, -1); 
} 

public Matcher<View> atPositionOnView(final int position, final int targetViewId) { 
    return new TypeSafeMatcher<View>() { 
     Resources resources = null; 
     View childView; 

     public void describeTo(Description description) { 
      String idDescription = Integer.toString(recyclerViewId); 
      if (this.resources != null) { 
       try { 
        idDescription = this.resources.getResourceName(recyclerViewId); 
       } catch (Resources.NotFoundException var4) { 
        idDescription = String.format("%s (resource name not found)", recyclerViewId); 
       } 
      } 
      description.appendText("with id: " + idDescription); 
     } 

     public boolean matchesSafely(View view) { 
      this.resources = view.getResources(); 
      if (childView == null) { 
       RecyclerView recyclerView = (RecyclerView) view.getRootView().findViewById(recyclerViewId); 

       if (recyclerView != null && recyclerView.getId() == recyclerViewId) { 
        RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(position); 

        if (viewHolder != null) { 
         childView = viewHolder.itemView; 
        } 
       } else { 
        return false; 
       } 
      } 
      if (targetViewId == -1) { 
       return view == childView; 
      } else { 
       View targetView = childView.findViewById(targetViewId); 
       return view == targetView; 
      } 
     } 
    }; 
} 
相关问题