'How can create merge adapter class in android kotlin

How can create merge adapter class in android Kotlin

i have two class one class contain header other class contain image card how can create merge adapter class in kotlin

Movie card adapter

class MovieCardAdapter (private var image:IntArray):RecyclerView.Adapter<MovieCardAdapter.CardViewHolder>(){


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder {
    val itemView = LayoutInflater.from(parent.context).inflate(R.layout.movie_cardview,parent,false)

    return CardViewHolder(itemView)
}

override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
    holder.movieImage.setImageResource(image[position])
    holder.movieImage.setOnClickListener { view ->
        val intent = Intent(view.context, MovieDetailsActivity::class.java)
        intent.putExtra("samples",image[position] )
        view.context.startActivity(intent)
    }
}

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

class CardViewHolder(itemView: View) :RecyclerView.ViewHolder(itemView){
    val movieImage : ImageView = itemView.findViewById(R.id.movieImage)
    val numberOfTrailer : TextView = itemView.findViewById(R.id.number_of_trailer)
} }

Header adapter

class HeaderAdapter(private var section:String): RecyclerView.Adapter<HeaderAdapter.HeaderViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HeaderViewHolder {
    val view = LayoutInflater.from(parent.context)
        .inflate(R.layout.headerview, parent, false)
    return HeaderViewHolder(view)
}

override fun onBindViewHolder(holder: HeaderViewHolder, position: Int) {
    holder.headerTxt.text = section
    holder.headerLayout.setOnClickListener { view ->
        val intent = Intent(view.context, GridLayoutDisplayActivity::class.java)
        intent.putExtra("samples", section )
        view.context.startActivity(intent)
    }
}

override fun getItemCount() = 1

class HeaderViewHolder(view: View) : RecyclerView.ViewHolder(view){
     val headerTxt: TextView = itemView.findViewById(R.id.headerTxt)
     val headerLayout: View = itemView.findViewById(R.id.section_click)
} }

fragment

val movieCardAdapter = MovieCardAdapter(image)
    val headerAdapter = HeaderAdapter("On Web")
    binding.imageCardRecycleview.adapter = headerAdapter


Solution 1:[1]

Other Solution:

You can simply Do this with declaring 2 adapter in one activity.

Put both recyclerview within nested scrollview. and stop the recyclerview scrolling by adding this code(for both recylerview).

val myLinearLayoutManager = object : LinearLayoutManager(this) {
    override fun canScrollVertically(): Boolean {
        return false
    }
}

recyclerview !!.layoutManager = myLinearLayoutManager

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 Tyler2P