[英]How can create merge adapter class in android kotlin
如何在 android Kotlin 中創建合並適配器 class
我有兩個 class 一個 class 包含 header 其他 class 包含圖像卡 如何在 kotlin 中創建合並適配器 class
電影卡適配器
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 適配器
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)
} }
分段
val movieCardAdapter = MovieCardAdapter(image)
val headerAdapter = HeaderAdapter("On Web")
binding.imageCardRecycleview.adapter = headerAdapter
您可以在此處使用 ConcatAdapter。 您可以查看我的回購作為示例。
其他解決方案:
您可以通過在一項活動中聲明 2 個適配器來簡單地執行此操作。
將兩個recyclerview
放在嵌套scrollview
中。 並通過添加此代碼(對於兩個recylerview
)停止recyclerview
滾動。
val myLinearLayoutManager = object : LinearLayoutManager(this) {
override fun canScrollVertically(): Boolean {
return false
}
}
recyclerview !!.layoutManager = myLinearLayoutManager
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.