Shi*_*tav 9 android android-espresso android-recyclerview
有没有办法使用Espresso滚动到recyclerview的末尾?
有一个带文字的项目,我们说'Text XYZ',而recyclerview有一个id recycleler_view.此项恰好是回收站视图的最后一项.
我试过了
onView(withId(R.id.recycler_view)).check(matches(isDisplayed())).perform(RecyclerViewActions.scrollTo(withText("Text XYZ")),click());
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用.有任何想法吗?
Be_*_*ive 14
RecyclerViewActions.scrollTo()针对匹配ItemView的ViewHolder,这是在充气onCreateViewHolder()适配器的.为了scrollTo()使其工作,您需要提供唯一标识的匹配器ItemView.
你当前的匹配器告诉espresso滚动到一个用a TextView作为膨胀的ViewHolder itemView.这可能会发生,但通常你会ViewGroup采取一些行动,以你想要的方式为视图持有者设计风格.
如果更改scrollTo()匹配器,则hasDescendant(withText("Text XYZ"))考虑所有嵌套布局(如果有多个).
另外请记住,因为您还试图单击该项目 - 您不能同时执行该项目,perform()因为它会将点击发送到当前ViewInteraction,在这种情况下是RecyclerView带有id的R.id.recycler_view.在同一个执行中执行此操作只需单击中间RecyclerView,而不是您滚动到的项目.
要解决此问题,您需要使用另一个onView()用于滚动到项目或使用的匹配器RecyclerView.actionOnItem().
如果是另一个onView()语句,hasDescendant(withText("Text XYZ"))则会失败,因为它会找到该TextView的所有父项(viewholder,recyclerview,包含recyclerview的视图组等),因为它们都有这个特殊的后代.这将强制您使ItemView匹配器更精确并考虑所有嵌套布局.我通常去匹配器是withChild()在这些情况下,但它可能会有所不同.
| 归档时间: |
|
| 查看次数: |
5492 次 |
| 最近记录: |