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