Crimson Space
Crimson Space

Reputation: 11

I am trying to create a RecyclerView in Kotlin but having what seems a simple issue

So im trying to create a RecyclerView but im getting errors on "class RecyclerAdapter" and "override fun onBindViewHolder" Reference photo down below Errors

On the first it states "Class 'RecyclerAdapter' is not abstract and does not implement abstract base class member public abstract fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int): Unit defined in androidx.recyclerview.widget.RecyclerView.Adapter"

The second error states "onBindViewHolder' overrides nothing"

im am following this tutorial https://www.youtube.com/watch?v=ai9rSGcDhyQ&ab_channel=CodePalace Here the snippet from the tutorial that Im having problems with Heres the snippet of the video

I copied the tutorial almost word for word but I have no idea why im still getting these erros and trust me I have tried researching here and elsewhere including android documentation for solutions but to no avail. Here is what I tried to try to fix it:When I added RecyclerView.Viewholder both errors disappear but then the variables become unresolved

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    holder.itemTitle.text=titles[position]
    holder.itemDetail.text=details[position]
    holder.itemPicture.setImageResource(images[position])


}

I would be very grateful if you can find a solution to this issue.

thank you

class RecyclerAdapter (private var titles:List<String>,private var details: List<String>,private var 
         images:List<Int>):
    RecyclerView.Adapter<RecyclerView.ViewHolder>(){


       inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    val itemTitle: TextView = itemView.findViewById(R.id.title)
    val itemDetail:TextView=itemView.findViewById(R.id.description)
    val itemPicture: ImageView =itemView.findViewById(R.id.iv_image)

    init {
        // Define click listener for the ViewHolder's View.
        itemView.setOnClickListener{v:View->
            val position:Int =adapterPosition
            Toast.makeText(itemView.context," You clicked on item # 
          ${position+1}",Toast.LENGTH_SHORT)
        }
    }
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

    val v =LayoutInflater.from(parent.context).inflate(R.layout.item_layout,parent,false)
    return ViewHolder(v)

}



override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.itemTitle.text=titles[position]
    holder.itemDetail.text=details[position]
    holder.itemPicture.setImageResource(images[position])
}
override fun getItemCount(): Int {
    return titles.size

}

}

Upvotes: 0

Views: 533

Answers (1)

Sơn Phan
Sơn Phan

Reputation: 1170

RecyclerAdapter.ViewHolder, not RecyclerView.ViewHolder

class RecyclerAdapter (private var titles:List<String>,private var details: List<String>,private var 
         images:List<Int>):
    RecyclerView.Adapter<RecyclerAdapter.ViewHolder>()

Upvotes: 1

Related Questions