簡體   English   中英

如何在 android kotlin 中創建合並適配器 class

[英]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。 您可以查看我的回購作為示例。

https://github.com/cnrture/ConcatAdapterExample

其他解決方案:

您可以通過在一項活動中聲明 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM