能够滚动无休止的循环回收器视图,但无法单击特定列表项
Posted
技术标签:
【中文标题】能够滚动无休止的循环回收器视图,但无法单击特定列表项【英文标题】:able to scroll through an endless circular recycler view but not able to click on the specific list item 【发布时间】:2019-06-13 09:00:08 【问题描述】:我正在开发一个应用程序,开发人员在该应用程序中创建了一个无限循环的循环视图。使用该应用程序时,您可以无休止地滚动浏览回收站视图。为此,您必须单击回收站视图上的任何项目并滚动。一旦你在屏幕上看到想要的项目,你必须离开你的手指,一旦你离开手指,屏幕背景就会改变颜色,屏幕上会显示一个相应的按钮。现在,这是我面临的问题。
我使用 Espresso 和 Barista 库滚动浏览列表,并且成功滚动。我使用以下代码滚动:
咖啡师图书馆:
scrollListToPosition(R.id.recyclerview, 5);
clickListItem(R.id.recyclerview, 6);
此外,Espresso 库:
onView(withId(R.id.content_view)).perform(RecyclerViewActions.scrollToPosition(5));
使用上述两种方法,我都可以滚动列表,屏幕上出现正确的项目,但背景颜色没有改变,相应的按钮也没有显示在屏幕上。 (如果我将此行为与实际设备进行比较,当我用手指向上滑动但没有将手指留在屏幕上时会发生这种情况。一旦我离开手指,颜色就会改变并出现一个按钮)所以,在简而言之,我可以滚动但无法模仿手指离开屏幕的行为。
【问题讨论】:
【参考方案1】:使用 Espresso,您可以使用 RecyclerViewActions.actionOnItemAtPosition
并执行长按以产生离开手指的效果:
onView(withId(R.id.content_view)).perform(RecyclerViewActions.actionOnItemAtPosition(5, longClick()));
【讨论】:
它给出了相同的结果。它滚动到第 5 个元素,但没有单击。正如应用程序需要 => 触摸手指 + 滚动到所需元素 + 释放手指。我认为,我们可以只滚动,但不确定如何模仿滚动之前的触摸和释放。 您尝试过自定义滑动吗?我没有尝试过,但这可能会给出你想要的结果。这个答案有一个实现示例:***.com/a/32933907/6266427 我尝试了 GeneralSwipeAction,但没有帮助。我可以找到上面发布的工作代码。【参考方案2】:我找到了上述问题的答案。单击和滚动必须背靠背执行,就像拖放一样:
onView(withId(R.id.recycler_view)).perform(actionOnItemAtPosition(0, longClick()));
onView(withId(R.id.recycler_view)).perform(actionOnItemAtPosition(1, swipeUp()));
使用这段代码,我长按第 0 个元素,然后向上滑动到第一个元素。
【讨论】:
以上是关于能够滚动无休止的循环回收器视图,但无法单击特定列表项的主要内容,如果未能解决你的问题,请参考以下文章
想要删除recycleview上的一个项目。单击按钮删除单击。该项目在firebase数据库中删除但在循环视图中该项目存在