【发布时间】:2018-04-23 10:50:35
【问题描述】:
美好的一天!
在Android Studio 3.0 中使用Kotlin 1.1.51,定位Android API 26 创建RecyclerView 和下一个ViewHolder,但在构建项目时收到错误:
类型不匹配:推断类型是 View!但 TextView 是预期的
所以我无法直接找到TextView 到ViewHolder 变量,但在附近找到了 - 找到 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)
}
【问题讨论】:
-
使用较新的(比
1.1.51)和最近的1.2.71最近的 Kotlin 版本,错误消失了
标签: android android-recyclerview kotlin