package com.dayu.general.adapter
|
|
import android.content.Context
|
import android.view.LayoutInflater
|
import android.view.ViewGroup
|
import androidx.databinding.DataBindingUtil
|
import androidx.recyclerview.widget.RecyclerView
|
import com.dayu.baselibrary.databinding.ItemNoMoreBinding
|
import com.dayu.general.bean.net.CardReplaceInfo
|
import com.dayu.general.databinding.ItemCardReplaceBinding
|
|
/**
|
* 卡片补办适配器
|
*/
|
class CardReplaceAdapter(private val context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
|
|
// 卡片补办列表数据
|
private var cardList: List<CardReplaceInfo> = emptyList()
|
|
// 点击监听器 - 用于选择要补办的卡片
|
private var onItemClickListener: ((CardReplaceInfo) -> Unit)? = null
|
|
/**
|
* 设置新数据(重置)
|
*/
|
fun setData(data: List<CardReplaceInfo>) {
|
cardList = data
|
notifyDataSetChanged()
|
}
|
|
/**
|
* 添加更多数据(分页加载)
|
*/
|
fun addData(data: List<CardReplaceInfo>) {
|
val oldSize = cardList.size
|
cardList = cardList + data
|
notifyItemRangeInserted(oldSize, data.size)
|
}
|
|
/**
|
* 设置项点击监听器 - 用于选择卡片进行补办
|
*/
|
fun setOnItemClickListener(listener: (CardReplaceInfo) -> Unit) {
|
onItemClickListener = listener
|
}
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
return if (viewType == VIEW_TYPE_EMPTY) {
|
// 空视图
|
val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate(
|
(context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater),
|
com.dayu.baselibrary.R.layout.item_no_more,
|
parent,
|
false
|
)
|
ViewHolderEmpty(emptyView)
|
} else {
|
// 卡片项视图
|
val binding = ItemCardReplaceBinding.inflate(
|
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
|
parent,
|
false
|
)
|
CardViewHolder(binding)
|
}
|
}
|
|
override fun getItemViewType(position: Int): Int {
|
return if (cardList.isEmpty()) {
|
VIEW_TYPE_EMPTY
|
} else {
|
VIEW_TYPE_ITEM
|
}
|
}
|
|
override fun getItemCount(): Int {
|
return if (cardList.isEmpty()) {
|
1 // 显示空视图
|
} else {
|
cardList.size
|
}
|
}
|
|
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
if (holder is ViewHolderEmpty) {
|
// 空视图无需绑定数据
|
return
|
}
|
|
if (holder is CardViewHolder) {
|
val card = cardList[position]
|
holder.bind(card)
|
|
// 设置整个项的点击事件,用于选择要补办的卡片
|
holder.itemView.setOnClickListener {
|
onItemClickListener?.invoke(card)
|
}
|
}
|
}
|
|
/**
|
* 卡片视图持有者
|
*/
|
inner class CardViewHolder(val binding: ItemCardReplaceBinding) : RecyclerView.ViewHolder(binding.root) {
|
fun bind(card: CardReplaceInfo) {
|
binding.cardInfo = card
|
binding.executePendingBindings()
|
}
|
}
|
}
|