'kotlin error recycler view with gridlayout type was mismatched

im facing errors in recyclerView here is //

data class categories(

val Name: String,
val Image:Int

) here is model /////

object CategoriesModel {

fun getImages(): ArrayList<categories> {
    val ImagesList = ArrayList<categories>()
    val categoryFirst = categories(
        "Memmals",R.drawable.memmals
    )
    ImagesList.add(categoryFirst)



    val categorySecond = categories(
        "Memmals",R.drawable.fish
    )
    ImagesList.add(categorySecond)
    return ImagesList
    }
}

//// adapter///

class CategoriesAdapter(private val itemList: ArrayList) : RecyclerView.Adapter<CategoriesAdapter.ViewHolder>() {

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


    val view =LayoutInflater.from(parent.context)

.inflate(R.layout.memmals, parent,false) return ViewHolder(view)

}

override fun onBindViewHolder(holder: CategoriesAdapter.ViewHolder, position: Int) {
    holder.bind(categories("Memmals",2))
}

override fun getItemCount(): Int {
    return itemList.size
}

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

    fun bind(category: categories) {
        val textViewName = itemView.findViewById<TextView>(R.id.txtCategory)
        textViewName.text = category.Name
        val txtImage=itemView.findViewById<View>(R.id.image)
        txtImage.id=category.Image
    }
}

} /////main activity///

class MainActivity : AppCompatActivity() {

private lateinit var mAdapter: CategoriesAdapter
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    binding= ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
    binding.recyclerView.setOnClickListener{
        val intent=Intent(this,Level1::class.java)
        startActivity(intent)

    }

    val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
    recyclerView.layoutManager = GridLayoutManager(this,2)

    val itemList = ArrayList<CategoriesModel>()

// from here

    itemList.add(categories("Memmals",R.drawable.memmals))
    itemList.add(categories("Fishes",R.drawable.fish))
    itemList.add(categories("Arthropods",R.drawable.dear))
    itemList.add(categories("Yalk",R.drawable.yalk))

//to here errors are there

    //Adapter setting
    mAdapter = CategoriesAdapter(itemList)
    recyclerView.adapter = mAdapter

}

} /// here is the error///

MainActivity.kt: (34, 22): Type mismatch: inferred type is categories but CategoriesModel was expected



Solution 1:[1]

MainActivity.kt

 val itemList = ArrayList<CategoriesModel>()

should be changed to

 val itemList = ArrayList<categories>()

because you are using CategoriesModel object and expected is categories.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jinal Patel