gpt4 book ai didi

android - Kotlin 类型不匹配 : inferred type is View! 但 TextView 是预期的

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:21 25 4
gpt4 key购买 nike

美好的一天!在 Android Studio 3.0 中使用 Kotlin 1.1.51,针对 Android API 26 创建 RecyclerView 下一个 ViewHolder,但在构建项目时收到错误:

Type mismatch: inferred type is View! but TextView was expected

所以我无法直接在 ViewHolder 变量中找到 TextView,但找到了方法 - 找到 View,然后用 as TextView 进行转换正如您在 holder.textView 的代码中看到的那样。看起来不太好,那么有解决方案如何防止这个错误还是一个错误?RecyclerView.Adapter代码:

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.custom_item_view, parent, false)
return VH(view)
}

override fun onBindViewHolder(holder: VH, position: Int) {
val event: TimelineEvent = items[position]

// does not work because of error in VH class
holder.timeView.text = event.time

// works
(holder.textView as TextView).text = event.text
}

class VH(itemView: View) : RecyclerView.ViewHolder(itemView) {
// error: Type mismatch: inferred type is View! but TextView was expected
val timeView: TextView = itemView.findViewById(R.id.timeline_item_time)

// works fine
val textView: View = itemView.findViewById(R.id.timeline_item_text)
}

最佳答案

您似乎尚未达到 API 级别 26 或更高级别。那时 findViewById 已更改,因此它返回通用 T 而不是基 View 类,这使您可以在 these ways 中从 Kotlin 使用它.

您可以按照@AlexTa 在 other answer 中建议的那样手动转换 findViewById 调用的结果,或者您可以将支持库版本更新为 26 或更高版本 -目前最新的是 27.0.0。这些新版本可从 Google's Maven repository 获得。

关于android - Kotlin 类型不匹配 : inferred type is View! 但 TextView 是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47218868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com