类型不匹配:推断类型是 RecyclerAdapter 但 RecyclerView.Adapter<RecyclerView.ViewHolder>?



我正在学习RecyclerViews,并在看完本教程后尝试制作一个。一切都很顺利,直到最后我在将适配器连接到MainActivity时出错。

我在MainActivity.kt中得到的错误是:

Type mismatch: inferred type is RecyclerAdapter but RecyclerView.Adapter<RecyclerView.ViewHolder>? was expected

第22行出现错误

这是我的MainActivity.kt

package com.example.testing
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
private var layoutManager: RecyclerView.LayoutManager? = null
private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rvTest = findViewById<RecyclerView>(R.id.rvTest)
layoutManager = LinearLayoutManager(this)
rvTest.layoutManager = layoutManager
adapter = RecyclerAdapter()
rvTest.adapter = adapter
}
}

这是我的再生适配器

package com.example.testing
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
class RecyclerAdapter: RecyclerView.Adapter<RecyclerAdapter.ViewHolder>() {
private var Title = arrayOf("Cosmopolitan", "Vodka Sprite")
private var Image = intArrayOf(R.drawable.ic_launcher_foreground, R.drawable.ic_launcher_background)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerAdapter.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.rv, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: RecyclerAdapter.ViewHolder, position: Int) {
holder.itemTitle.text = Title[position]
holder.itemImage.setImageResource(Image[position])
}
override fun getItemCount(): Int {
return Title.size
}
inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var itemImage: ImageView
var itemTitle: TextView
init {
itemImage = itemView.findViewById(R.id.imageView)
itemTitle = itemView.findViewById(R.id.textView)
}
}
}

您使用扩展RecyclerView.Adapter<RecyclerView.ViewHolder>()而不是类RecyclerAdapter来扩展变量。更换

private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>? = null

带有

private lateinit var adapter : RecyclerViewAdapter ?= null

在您的MainActivity.kt 中

private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>? = null

适配器变量的数据类型错误将其更改为类似的内容

private var adapter: RecyclerAdapter? = null

此外,您可以改为lateinit&使其成为不可为null的类型,因为它将在Create中初始化

private lateinit var adapter: RecyclerAdapter

更改

private var adapter: RecyclerView.Adapter<RecyclerView.ViewHolder>() 

private var adapter: RecyclerView.Adapter<RecyclerAdapter.ViewHolder>

相关内容

最新更新