Android 浓缩咖啡回收视图滚动至末尾
我有一个Android应用程序,它有一个包含N个元素的RecyclerView,当这个RecyclerView在滚动时结束时,会添加更多元素(因此,当滚动到底部时,它是一个无限列表,可以加载数据) 我想测试一下,但我还没有找到一种方法。我使用具有scrollToPosition的RecycleServiceActions,但即使我放置最后一个位置,也无法到达终点(因为每个元素的高度都很高)Android 浓缩咖啡回收视图滚动至末尾,android,android-recyclerview,android-espresso,Android,Android Recyclerview,Android Espresso,我有一个Android应用程序,它有一个包含N个元素的RecyclerView,当这个RecyclerView在滚动时结束时,会添加更多元素(因此,当滚动到底部时,它是一个无限列表,可以加载数据) 我想测试一下,但我还没有找到一种方法。我使用具有scrollToPosition的RecycleServiceActions,但即使我放置最后一个位置,也无法到达终点(因为每个元素的高度都很高) 有人知道我该怎么做吗?我使用下面的按钮滚动到我的回收视图的底部 activity = mActivityT
有人知道我该怎么做吗?我使用下面的按钮滚动到我的
回收视图的底部
activity = mActivityTestRule.launchActivity(startingIntent);
onView(withId(R.id.recyclerView))
.perform(RecyclerViewActions.scrollToPosition(activity.recyclerView.getAdapter().getItemCount() - 1));
当加载更多数据时,您必须使用(或Thread.sleep()
)再次调用它
// Get total item of myRecyclerView
RecyclerView recyclerView = mActivityTestRule.getActivity().findViewById(R.id.myRecyclerView);
int itemCount = recyclerView.getAdapter().getItemCount();
Log.d("Item count is ", String.valueOf(itemCount));
// Scroll to end of page with position
onView(withId(R.id.myRecyclerView))
.perform(RecyclerViewActions.scrollToPosition(itemCount - 1));
您可以实现ViewAction。像这样:
class ScrollToBottomAction : ViewAction {
override fun getDescription(): String {
return "scroll RecyclerView to bottom"
}
override fun getConstraints(): Matcher<View> {
return allOf<View>(isAssignableFrom(RecyclerView::class.java), isDisplayed())
}
override fun perform(uiController: UiController?, view: View?) {
val recyclerView = view as RecyclerView
val itemCount = recyclerView.adapter?.itemCount
val position = itemCount?.minus(1) ?: 0
recyclerView.scrollToPosition(position)
uiController?.loopMainThreadUntilIdle()
}
}
onView(withId(R.id.recyclerView)).perform(ScrollToBottomAction())
如果在测试过程中执行了拖动事件,该怎么办?类似这样的事情-测试进行得太快了,我没有足够的时间来刷它。我还试着用浓缩咖啡录音机,但没有捕捉到拖动事件。我错过了房车有自己的滚动条。谢谢。问题是他已经在用这个了。但是,由于最后一个元素比屏幕大,因此无法到达底部。scrollToPosition只会滚动到项目的上边缘。因此,一个比屏幕大的项目仍然会在屏幕的下边缘隐藏部分。我也有同样的问题,即使是这个代码。我有点困惑为什么会接受它,因为它只会滚动到最后一个元素的顶部,而不会滚动到RecyclerView的最底部。ScrollToposition现在将ViewHolder名称作为类型。建议修改sameYou是大师。