类型推断失败:RecyclerViewActions.scrollTo()

时间:2017-05-30 17:05:36

标签: kotlin

来自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.

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

3 个答案:

答案 0 :(得分:19)

我需要将<RecyclerView.ViewHolder>添加到scrollTo

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

答案 1 :(得分:0)

执行以下操作: onView(withId(R.id.recycler_view))                 .perform(RecyclerViewActions.scrollToPosition(11))

答案 2 :(得分:0)

对于要使用的多个VH(尤其是单个RecyclerView中的多个VH)中的,很容易感到困惑,您可以简单地使用 Generic ViewHolder ,例如RecyclerView.ViewHolder

RecyclerViewActions.actionOnItem<RecyclerView.ViewHolder>

RecyclerViewActions.actionOnHolderItem<RecyclerView.ViewHolder>

RecyclerViewActions.actionOnItemAtPosition<RecyclerView.ViewHolder>

我希望这会有所帮助。