对比新文件 |
| | |
| | | package com.example.firstapp.adapter |
| | | |
| | | import android.graphics.Color |
| | | import android.graphics.Paint |
| | | import android.view.LayoutInflater |
| | | import android.view.View |
| | | import android.view.ViewGroup |
| | | import android.widget.TextView |
| | | import androidx.cardview.widget.CardView |
| | | import androidx.recyclerview.widget.RecyclerView |
| | | import com.example.firstapp.R |
| | | import com.example.firstapp.model.CardData |
| | | |
| | | |
| | | class CardAdapter(private val cardList: List<CardData>, |
| | | private val itemClickListener: (MutableList<CardView>, CardData, CardView) -> Unit |
| | | ) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { |
| | | |
| | | private val CONTINUE_MONTHLY_VIEW_TYPE = 0 |
| | | private val YEARLY_VIEW_TYPE = 1 |
| | | private val SINGLE_MONTH_VIEW_TYPE = 2 |
| | | |
| | | private val cardViewList: MutableList<CardView> = mutableListOf() |
| | | |
| | | override fun getItemViewType(position: Int): Int { |
| | | return when (cardList[position]) { |
| | | is CardData.ContinueMonthly -> CONTINUE_MONTHLY_VIEW_TYPE |
| | | is CardData.Yearly -> YEARLY_VIEW_TYPE |
| | | is CardData.SingleMonth -> SINGLE_MONTH_VIEW_TYPE |
| | | } |
| | | } |
| | | |
| | | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { |
| | | return when (viewType) { |
| | | CONTINUE_MONTHLY_VIEW_TYPE -> { |
| | | val view = LayoutInflater.from(parent.context).inflate(R.layout.item_card_continue_monthly, parent, false) |
| | | ContinueMonthlyViewHolder(view) |
| | | } |
| | | YEARLY_VIEW_TYPE -> { |
| | | val view = LayoutInflater.from(parent.context).inflate(R.layout.item_card_yearly, parent, false) |
| | | YearlyViewHolder(view) |
| | | } |
| | | SINGLE_MONTH_VIEW_TYPE -> { |
| | | val view = LayoutInflater.from(parent.context).inflate(R.layout.item_card_single_month, parent, false) |
| | | SingleMonthViewHolder(view) |
| | | } |
| | | else -> throw IllegalArgumentException("Unknown view type") |
| | | } |
| | | } |
| | | |
| | | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { |
| | | when (holder) { |
| | | is ContinueMonthlyViewHolder -> { |
| | | val data = cardList[position] as CardData.ContinueMonthly |
| | | |
| | | holder.firstMonthTag.text = data.firstMonthTag |
| | | holder.titleText.text = data.title |
| | | holder.subTitleText.text = data.subTitle |
| | | holder.priceText.text = data.price.toString() |
| | | holder.nextPriceText.text = data.nextPrice |
| | | holder.autoRenewText.text = data.autoRenew |
| | | |
| | | cardViewList.add(holder.cardView) |
| | | |
| | | holder.itemView.setOnClickListener { itemClickListener(cardViewList,data, holder.cardView) } // 设置点击事件 |
| | | } |
| | | is YearlyViewHolder -> { |
| | | val data = cardList[position] as CardData.Yearly |
| | | holder.discountTag.text = data.discountTag |
| | | holder.titleText.text = data.title |
| | | holder.priceText.text = data.price.toString() |
| | | holder.originalPriceText.text = data.originalPrice.toString() |
| | | |
| | | // 设置中划线 |
| | | val paint = holder.originalPriceText.paint |
| | | paint.flags = paint.flags or Paint.STRIKE_THRU_TEXT_FLAG |
| | | paint.color = Color.RED // 设置中划线的颜色 |
| | | |
| | | cardViewList.add(holder.cardView) |
| | | |
| | | holder.itemView.setOnClickListener { itemClickListener(cardViewList,data, holder.cardView) } // 设置点击事件 |
| | | } |
| | | is SingleMonthViewHolder -> { |
| | | val data = cardList[position] as CardData.SingleMonth |
| | | holder.titleText.text = data.title |
| | | holder.priceText.text = data.price.toString() |
| | | |
| | | cardViewList.add(holder.cardView) |
| | | |
| | | holder.itemView.setOnClickListener { itemClickListener(cardViewList,data, holder.cardView) } // 设置点击事件 |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | override fun getItemCount(): Int { |
| | | return cardList.size |
| | | } |
| | | |
| | | inner class ContinueMonthlyViewHolder(view: View) : RecyclerView.ViewHolder(view) { |
| | | val cardView: CardView = view.findViewById(R.id.vip_first_month_card_view) |
| | | val firstMonthTag: TextView = view.findViewById(R.id.first_month_tag) |
| | | val titleText: TextView = view.findViewById(R.id.title_text) |
| | | val subTitleText: TextView = view.findViewById(R.id.sub_title_text) |
| | | val priceText: TextView = view.findViewById(R.id.price_text) |
| | | val nextPriceText: TextView = view.findViewById(R.id.next_price_text) |
| | | val autoRenewText: TextView = view.findViewById(R.id.auto_renew_text) |
| | | |
| | | } |
| | | |
| | | inner class YearlyViewHolder(view: View) : RecyclerView.ViewHolder(view) { |
| | | val cardView: CardView = view.findViewById(R.id.vip_year_card_view) |
| | | val discountTag: TextView = view.findViewById(R.id.discount_tag) |
| | | val titleText: TextView = view.findViewById(R.id.yearly_title_text) |
| | | val priceText: TextView = view.findViewById(R.id.yearly_price_text) |
| | | val originalPriceText: TextView = view.findViewById(R.id.yearly_original_price_text) |
| | | |
| | | } |
| | | |
| | | inner class SingleMonthViewHolder(view: View) : RecyclerView.ViewHolder(view) { |
| | | val cardView: CardView = view.findViewById(R.id.vip_month_card_view) |
| | | val titleText: TextView = view.findViewById(R.id.single_month_title_text) |
| | | val priceText: TextView = view.findViewById(R.id.single_month_price_text) |
| | | |
| | | } |
| | | } |