这里是该操作的代码。除了perform
方法之外,其他都与原始文档相同。
public final class CustomRecyclerViewActions {
private CustomRecyclerViewActions() { }
public static <VH extends RecyclerView.ViewHolder> ViewAction scrollToPosition(@IntRange(from = 0) final int position) {
return new ScrollToPositionViewAction(position);
}
private static final class ScrollToPositionViewAction implements ViewAction {
private final int position;
private ScrollToPositionViewAction(int position) {
this.position = position;
}
public Matcher<View> getConstraints() {
return Matchers.allOf(ViewMatchers.isAssignableFrom(RecyclerView.class), ViewMatchers.isDisplayed());
}
public String getDescription() {
int var1 = this.position;
return (new StringBuilder(44)).append("scroll RecyclerView to position: ").append(var1).toString();
}
public void perform(@NonNull UiController uiController, @NonNull View view) {
RecyclerView recyclerView = (RecyclerView)view;
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
((LinearLayoutManager) layoutManager).scrollToPositionWithOffset(this.position, 0);
} else {
layoutManager.scrollToPosition(this.position);
}
uiController.loopMainThreadUntilIdle();
}
}
}