能够滚动无休止的循环回收器视图,但无法单击特定列表项

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 个元素,然后向上滑动到第一个元素。

【讨论】:

以上是关于能够滚动无休止的循环回收器视图,但无法单击特定列表项的主要内容,如果未能解决你的问题,请参考以下文章

IOS中的股票行情水平滚动视图?

每次重新创建滚动位置后,如何将滚动位置保存在回收站视图中?

ListView 中的 EditText 没有它回收输入

回收站视图滚动到特定位置

想要删除recycleview上的一个项目。单击按钮删除单击。该项目在firebase数据库中删除但在循环视图中该项目存在

如何通过 android 中的回收器视图运行 for 循环?