【问题标题】:Type inference failed: RecyclerViewActions.scrollTo()类型推断失败:RecyclerViewActions.scrollTo()
【发布时间】:2019-04-25 11:33:06
【问题描述】:

来自java:

onView(withId(R.id.recyclerView)).perform(RecyclerViewActions.scrollTo(
    hasDescendant(withText(artistResult.getNameVariations().get(0)))));

尝试转换为 Kotlin:

onView(withId(R.id.recyclerView)).perform(RecyclerViewActions.scrollTo(
    hasDescendant(withText(artistResult.nameVariations[0]))))

我得到了这个堆栈跟踪:

Error:(63, 71) Type inference failed: Not enough information to infer parameter VH in fun <VH : RecyclerView.ViewHolder!> scrollTo(itemViewMatcher: Matcher<View!>!): RecyclerViewActions.PositionableRecyclerViewAction!
Please specify it explicitly.

我不完全确定在哪里可以明确指定“它”。之前出现这种情况是因为我没有正确初始化值,但在这里我调用了一个方法。有什么想法吗?

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    我需要将&lt;RecyclerView.ViewHolder&gt; 添加到scrollTo

    onView(withId(R.id.recyclerView)).perform(
        RecyclerViewActions.scrollTo<RecyclerView.ViewHolder>(
        hasDescendant(withText(artistResult.nameVariations[0]))))
    

    【讨论】:

    • 但是为什么需要添加这个?
    【解决方案2】:

    人们很容易混淆关于哪个VH(特别是如果单个RecyclerView中有多个VH)使用,你可以简单使用 Generic ViewHolderRecyclerView.ViewHolder like :

    RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>
    
    RecyclerViewActions.actionOnHolderItem<RecyclerView.ViewHolder>
    
    RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>
    

    等等

    我希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      这样做: onView(withId(R.id.recycler_view)) .perform(RecyclerViewActions.scrollToPosition(11))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-08-21
        • 1970-01-01
        • 2020-12-30
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多