'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 |