Issue
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var tvName: TextView = itemView.findViewById(R.id.tvName)
var tvAge: TextView = itemView.findViewById(R.id.tvAge)
var ivProfile: ItemView = itemView.findViewById(R.id.ivProfile)
fun bind(contact: Contact) {
tvName.text = contact.name
tvAge.text = "Age: ${contact.age}"
Glide.with(context).load(contact.imageUrl).into (ivProfile)
}
}
}
Is there in kotlin only MenuView.ItemView
? Because Glide expects ItemView
Error Log:
Type mismatch: inferred type is MenuView.ItemView but ImageView was expected.
And if I paste instead of MenuView.ItemView
ImageView
then it says:
java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.ImageView
at com.jakob.kotlinrecyclerview.ContactAdapter$ViewHolder.<init>(ContactAdapter.kt:35)
at com.jakob.kotlinrecyclerview.ContactAdapter.onCreateViewHolder(ContactAdapter.kt:17)
at com.jakob.kotlinrecyclerview.ContactAdapter.onCreateViewHolder(ContactAdapter.kt:13)
Solution
You should be using ImageView
and not ItemView
there.
For the ClassCastException
check that the layout has id ivProfile
for the ImageView
only and not e.g. in a higher-level ConstraintLayout
.
Answered By - laalto
Answer Checked By - Mary Flores (JavaFixing Volunteer)