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 次 |
最近记录: |