【问题标题】:Android RecyclerView - Class is not abstract and does not implement abstract base class memberAndroid RecyclerView - 类不是抽象的,也没有实现抽象基类成员
【发布时间】:2019-02-20 19:52:12
【问题描述】:

我知道了:

class RecentAdapter(private val context: Context, private val videolist: MutableList<Videos>) : RecyclerView.Adapter<RecentAdapter.ViewHolder>(){

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        val video = videolist[position]

        holder.title.text = video.title

        holder.remove.setOnClickListener {

            videolist.removeAt(holder.adapterPosition)
            notifyItemRemoved(holder.adapterPosition)

        }

    }

    override fun getItemCount() = videolist.size

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

    class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!){

        val title = itemView!!.videoviewTitle!!
        val remove = itemView!!.videoviewRemove!!
        val like = itemView!!.videoviewLike!!

    }
}

我得到错误:

Class 'RecentAdapter' is not abstract and does not implement abstract base class member public abstract fun onBindViewHolder(@NonNull p0: RecentAdapter.ViewHolder, p1: Int): Unit defined in android.support.v7.widget.RecyclerView.Adapter

class RecentAdapter

'onBindViewHolder' overrides nothing

titleremove 上的未解决引用

有人可以帮我吗?

【问题讨论】:

  • 您的 IDE 可以生成您需要在尝试实现接口或抽象类的类上实现的方法。学习使用 IDE。如果是 IntelliJ/AndroidStudio ,请在光标位于类名 RecentAdapter 上方时尝试 Alt+Enter。

标签: android kotlin android-recyclerview


【解决方案1】:

onBindViewHolder()的签名改为:

override fun onBindViewHolder(holder: ViewHolder, position: Int)

第一个参数的类型是ViewHolder 而不是RecyclerView.ViewHolder

【讨论】:

  • 有效!谢谢!问题是它以前是这样工作的!我是认真的,我从一个教程中得到它,它也适用于它,它在我的其他应用程序中也适用。我已经厌倦了整个过度设计的工作,而不是需要成为一个废话机器人。..
  • 您会习惯这种可以轻松修复的(无害的)错误。 Android 开发比这复杂得多。
【解决方案2】:

第一个问题:

您没有覆盖正确的方法。在您的构造函数中,您声明要使用的ViewHolderRecentAdapter.ViewHolder,但您的onBindViewHolder 引用了通用RecyclerView.ViewHolder。要解决此问题,只需更改

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

override fun onBindViewHolder(holder: RecentAdapter.ViewHolder, position: Int) {

对于第二个问题,我不确定给定文件的错误是什么。确保在 videoview 布局文件中存在 ID 为 videoViewTitlevideoViewRemove 的视图以启动?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多