【问题标题】:How can create merge adapter class in android kotlin如何在 android kotlin 中创建合并适配器类
【发布时间】:2022-04-19 17:56:51
【问题描述】:

如何在 android Kotlin 中创建合并适配器类

我有两类一类包含标题另一类包含图像卡如何创建合并 kotlin 中的适配器类

电影卡适配器

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)
} }

标头适配器

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上查找示例,如果这就是您的意思。
  • 是的,我想 concatAdapter 请给出 concat Adapter 的例子

标签: android kotlin android-recyclerview


【解决方案1】:

其他解决方案:

您可以通过在一个活动中声明 2 个适配器来简单地做到这一点。

recyclerview 都放在嵌套的scrollview 中。并通过添加此代码停止recyclerview 滚动(对于recylerview)。

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

recyclerview !!.layoutManager = myLinearLayoutManager

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2021-12-12
    • 1970-01-01
    相关资源
    最近更新 更多