在层次结构中找不到匹配的视图:可从类分配:类 android.widget.AdapterView

Posted

技术标签:

【中文标题】在层次结构中找不到匹配的视图:可从类分配:类 android.widget.AdapterView【英文标题】:No views in hierarchy found matching: is assignable from class: class android.widget.AdapterView 【发布时间】:2017-08-19 09:56:02 【问题描述】:

我正在尝试使用 onData 获取回收视图,但我遇到了这个错误:

层次结构中没有找到匹配的视图:可从类分配:类 android.widget.AdapterView

代码是这样的:

onData(allOf(isAssignableFrom(RecyclerView.class), withId(R.id.ce_musers_list)))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)));

我的适配器扩展了RecyclerView.Adapter,因为它应该用于 RecycleView,但是,匹配器正在寻找一个简单的适配器。 这是我第一次使用 espress,所以我可能在一些基本的事情上失败了。

我的 Espresso 版本是 3.0.0

【问题讨论】:

【参考方案1】:

onData() 仅与 AdapterView 及其子类一起使用,RecyclerView 不属于它们。

espresso 附带了一个辅助类:RecyclerViewActions,可用于对视图持有者的 recyclerview 和 itemview 执行各种操作。

例如,如果您想做出断言 - 您可以滚动到 itemview,然后使用常规 onView()... 来检查该视图的详细信息。

【讨论】:

让我们使用 androidX 中的RecyclerViewActions 而不是未维护的包。【参考方案2】:
    val recyclerView = onView(
        allOf(
            withId(R.id.myRecyclerView),
            childAtPosition(
                withClassName(`is`("androidx.constraintlayout.widget.ConstraintLayout")),
                0
            )
        )
    )
    recyclerView.perform(actionOnItemAtPosition<ViewHolder>(1, click()))

【讨论】:

什么是 childAtPosition?

以上是关于在层次结构中找不到匹配的视图:可从类分配:类 android.widget.AdapterView的主要内容,如果未能解决你的问题,请参考以下文章

MFC学习一 MFC基础类及其层次结构

TestNG 错误在类路径中找不到类

错误:错误:层次结构中没有找到匹配的视图:(标签值:是“电子邮件”并且视图具有有效的可见性=可见)

Drupal EVA模块:视图中找不到实体内容设置

Docker“错误:在分配给网络的默认值中找不到可用的、非重叠的 IPv4 地址池”

在活动类 com.example.ivy.bienesraicesapp.PanelUsuarioActivity 中找不到方法(视图)