From fe04012057d024770e0180543483d393281a542f Mon Sep 17 00:00:00 2001 From: zhujie <leon.zhu@cloudroam.com.cn> Date: 星期四, 03 四月 2025 09:18:16 +0800 Subject: [PATCH] Merge branch 'master' of http://47.96.225.205:8888/r/FirstApp2 --- app/src/main/java/com/example/firstapp/adapter/CardAdapter.kt | 126 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 0 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/adapter/CardAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/CardAdapter.kt new file mode 100644 index 0000000..a12ce57 --- /dev/null +++ b/app/src/main/java/com/example/firstapp/adapter/CardAdapter.kt @@ -0,0 +1,126 @@ +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) + + } +} \ No newline at end of file -- Gitblit v1.9.3