Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 浓缩咖啡回收视图滚动至末尾_Android_Android Recyclerview_Android Espresso - Fatal编程技术网

Android 浓缩咖啡回收视图滚动至末尾

Android 浓缩咖啡回收视图滚动至末尾,android,android-recyclerview,android-espresso,Android,Android Recyclerview,Android Espresso,我有一个Android应用程序,它有一个包含N个元素的RecyclerView,当这个RecyclerView在滚动时结束时,会添加更多元素(因此,当滚动到底部时,它是一个无限列表,可以加载数据) 我想测试一下,但我还没有找到一种方法。我使用具有scrollToPosition的RecycleServiceActions,但即使我放置最后一个位置,也无法到达终点(因为每个元素的高度都很高) 有人知道我该怎么做吗?我使用下面的按钮滚动到我的回收视图的底部 activity = mActivityT

我有一个Android应用程序,它有一个包含N个元素的RecyclerView,当这个RecyclerView在滚动时结束时,会添加更多元素(因此,当滚动到底部时,它是一个无限列表,可以加载数据)

我想测试一下,但我还没有找到一种方法。我使用具有scrollToPosition的RecycleServiceActions,但即使我放置最后一个位置,也无法到达终点(因为每个元素的高度都很高)


有人知道我该怎么做吗?

我使用下面的按钮滚动到我的
回收视图的底部

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是大师。