package com.xscm.modulemain.adapter import android.view.View import com.chad.library.adapter.base.BaseMultiItemQuickAdapter import com.chad.library.adapter.base.BaseViewHolder import com.chad.library.adapter.base.entity.MultiItemEntity import com.xscm.modulemain.R import com.xscm.moduleutil.bean.RelationBean import com.xscm.moduleutil.bean.RelationshipBean import com.xscm.moduleutil.utils.ImageUtils import com.xscm.moduleutil.utils.MeHeadView import com.xscm.moduleutil.utils.SpUtil import com.xscm.moduleutil.utils.TimeUtils /** * 挚友列表适配器 */ class BosomFriendAdapter(data: MutableList) : BaseMultiItemQuickAdapter(data) { // 点击事件监听器 var onItemClickListener: OnItemClickListener? = null interface OnItemClickListener { fun onUserClick(userId: String) fun onDeleteClick(relation: RelationshipBean) fun onTopClick(relation: RelationshipBean) fun onDetailsClick(relationId: Int) } companion object { // 类型常量 const val TYPE_NOCP_WITH_NAME = 3 // no_cp集合,relation_name不等于"",并且relation_list的大小是1 const val TYPE_NOCP_WITH_NAME_AND_LIST = 5 // no_cp集合,relation_name不等于"",并且relation_list的大小大于1 } init { // 添加item类型 // addItemType(TYPE_CP_WITH_NAME, R.layout.item_relationship_list) // addItemType(TYPE_CP_WITH_LIST, R.layout.item_bosom_cp) addItemType(TYPE_NOCP_WITH_NAME, R.layout.item_relationship_list) // 修改为使用item_bosom_friend布局 // addItemType(TYPE_NOCP_WITH_LIST, R.layout.item_bosom_cp_friend) addItemType(TYPE_NOCP_WITH_NAME_AND_LIST, R.layout.item_bosom_friend_details) // addItemType(TYPE_NOCP_WITH_LIST_MORE, R.layout.item_bosom_friend_details) } override fun getItemViewType(position: Int): Int { val data = getItem(position) // 假设你使用的是ListAdapter when (data) { is RelationBean.NoCpBean -> { // 情况3:no_cp集合,relation_name不等于"",并且relation_list的大小是1 if (data.relation_name.isNotEmpty() && data.relation_list.size == 1) { return TYPE_NOCP_WITH_NAME } // 情况5:no_cp集合,relation_name不等于"",并且relation_list的大小大于1 if (data.relation_name.isNotEmpty() && data.relation_list.size > 1) { return TYPE_NOCP_WITH_NAME_AND_LIST } } } // 其他情况返回默认值 return TYPE_NOCP_WITH_NAME } /** * 转换NoCp类型数据 */ private fun convertNoCp(holder: BaseViewHolder, noCpBean: RelationBean.NoCpBean, viewType: Int) { // 根据viewType设置不同的UI when (viewType) { TYPE_NOCP_WITH_NAME -> { // 显示关系名称 holder.setText(R.id.tv_heartbeat, noCpBean.relation_name) // 显示关系名称 holder.setText(R.id.tv_cp_lv, noCpBean.relation_name) var meHeadView: MeHeadView var meHeadView2: MeHeadView meHeadView = holder.getView(R.id.user_nav1) meHeadView2 = holder.getView(R.id.user_nav2) meHeadView.setSex(noCpBean.relation_list[0].sex1,noCpBean.relation_list[0].avatar1) meHeadView2.setSex(noCpBean.relation_list[0].sex2,noCpBean.relation_list[0].avatar2) // 显示relation_list内容 // ImageUtils.loadHead(noCpBean.relation_list[0].avatar1, holder.getView(R.id.user_nav1)) holder.setText(R.id.tv_nickname1, noCpBean.relation_list[0].nickname1) // ImageUtils.loadHead(noCpBean.relation_list[0].avatar2, holder.getView(R.id.user_nav2)) holder.setText(R.id.tv_nickname2, noCpBean.relation_list[0].nickname2) if (noCpBean.relation_list[0].user_id1 == SpUtil.getUserId() || noCpBean.relation_list[0].user_id2 == SpUtil.getUserId()) { holder.setVisible(R.id.icon_cp_zd, true) holder.setVisible(R.id.icon_cp_dele, true) } else { holder.setVisible(R.id.icon_cp_zd, false) holder.setVisible(R.id.icon_cp_dele, false) } // 设置点击事件 holder.getView(R.id.user_nav1).setOnClickListener { // 点击第一个用户头像 onItemClickListener?.onUserClick(noCpBean.relation_list[0].user_id1.toString()) } holder.getView(R.id.user_nav2).setOnClickListener { // 点击第二个用户头像 onItemClickListener?.onUserClick(noCpBean.relation_list[0].user_id2.toString()) } // 设置删除按钮点击事件 holder.getView(R.id.icon_cp_dele).setOnClickListener { onItemClickListener?.onDeleteClick(noCpBean.relation_list[0]) } // 设置置顶按钮点击事件 holder.getView(R.id.icon_cp_zd).setOnClickListener { onItemClickListener?.onTopClick(noCpBean.relation_list[0]) } // 计算并显示剩余时间 val endTimeStr = noCpBean.relation_list[0].end_time if (!endTimeStr.isNullOrEmpty()) { try { val endTime = endTimeStr.toLong() val currentTime = System.currentTimeMillis() / 1000 // 当前时间戳(秒) val remainingSeconds = endTime - currentTime if (remainingSeconds > 0) { val days = remainingSeconds / (24 * 60 * 60) val hours = (remainingSeconds % (24 * 60 * 60)) / (60 * 60) val timeText = if (days > 0) { "${days}天${hours}小时" } else { "${hours}小时" } holder.setText(R.id.tv_cp_num, timeText) } } catch (e: NumberFormatException) { // 时间戳格式错误 holder.setVisible(R.id.tv_cp_num, false) } } else { // end_time为空 holder.setVisible(R.id.tv_cp_num, false) } } TYPE_NOCP_WITH_NAME_AND_LIST -> { // 显示关系名称 holder.setText(R.id.tvRelationName, noCpBean.relation_name) holder.setVisible(R.id.im_gd, true) // 设置置顶按钮点击事件 holder.getView(R.id.im_gd).setOnClickListener { onItemClickListener?.onDetailsClick(noCpBean.relation_list[0].relation_id) } // 显示relation_list内容,只显示前三个关系 if (noCpBean.relation_list.isNotEmpty()) { // 获取前三个关系,如果不足三个则显示全部 val displayCount = minOf(3, noCpBean.relation_list.size) // 根据显示数量设置不同的布局 when (displayCount) { 2 -> { holder.setVisible(R.id.rlRelation1,true) holder.setVisible(R.id.rlRelation2,true) holder.setVisible(R.id.rlRelation3,false) // 显示两个关系 val relation1 = noCpBean.relation_list[0] val relation2 = noCpBean.relation_list[1] var meHeadView : MeHeadView var meHeadView2 : MeHeadView meHeadView=holder.getView(R.id.user_nav1) meHeadView2=holder.getView(R.id.user_nav2) if (relation1.user_id1== SpUtil.getUserId()){ meHeadView.setSex(relation1.sex2,relation1.avatar2) holder.setText(R.id.tv_nickname1, relation1.nickname2) }else{ meHeadView.setSex(relation1.sex1,relation1.avatar1) holder.setText(R.id.tv_nickname1, relation1.nickname1) } if (relation2.user_id1== SpUtil.getUserId()){ meHeadView2.setSex(relation2.sex2,relation2.avatar2) holder.setText(R.id.tv_nickname2, relation2.nickname2) }else{ meHeadView2.setSex(relation2.sex1,relation2.avatar1) holder.setText(R.id.tv_nickname2, relation2.nickname1) } // ImageUtils.loadHead(relation1.avatar1, holder.getView(R.id.user_nav1)) // holder.setText(R.id.tv_nickname1, relation1.nickname1) // ImageUtils.loadHead(relation2.avatar1, holder.getView(R.id.user_nav2)) // holder.setText(R.id.tv_nickname2, relation2.nickname1) holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong())) holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong())) holder.getView(R.id.user_nav1).setOnClickListener { if (relation1.user_id1== SpUtil.getUserId()){ // 点击第一个用户头像 onItemClickListener?.onUserClick(relation1.user_id2.toString()) }else { // 点击第一个用户头像 onItemClickListener?.onUserClick(relation1.user_id1.toString()) } } holder.getView(R.id.user_nav2).setOnClickListener { if (relation2.user_id1== SpUtil.getUserId()) { // 点击第二个用户头像 onItemClickListener?.onUserClick(relation2.user_id2.toString()) }else{ onItemClickListener?.onUserClick(relation2.user_id1.toString()) } } } 3 -> { holder.setVisible(R.id.rlRelation1,true) holder.setVisible(R.id.rlRelation2,true) holder.setVisible(R.id.rlRelation3,true) // 显示三个关系 val relation1 = noCpBean.relation_list[0] val relation2 = noCpBean.relation_list[1] val relation3 = noCpBean.relation_list[2] var meHeadView : MeHeadView var meHeadView2 : MeHeadView var meHeadView3 : MeHeadView meHeadView=holder.getView(R.id.user_nav1) meHeadView2=holder.getView(R.id.user_nav2) meHeadView3=holder.getView(R.id.user_nav3) if (relation1.user_id1== SpUtil.getUserId()){ meHeadView.setSex(relation1.sex2,relation1.avatar2) holder.setText(R.id.tv_nickname1, relation1.nickname2) }else{ meHeadView.setSex(relation1.sex1,relation1.avatar1) holder.setText(R.id.tv_nickname1, relation1.nickname1) } if (relation2.user_id1== SpUtil.getUserId()){ meHeadView2.setSex(relation2.sex2,relation2.avatar2) holder.setText(R.id.tv_nickname2, relation2.nickname2) }else{ meHeadView2.setSex(relation2.sex1,relation2.avatar1) holder.setText(R.id.tv_nickname2, relation2.nickname1) } if (relation3.user_id1== SpUtil.getUserId()){ meHeadView3.setSex(relation3.sex2,relation3.avatar2) holder.setText(R.id.tv_nickname3, relation3.nickname2) }else{ meHeadView3.setSex(relation3.sex1,relation3.avatar1) holder.setText(R.id.tv_nickname3, relation3.nickname1) } // ImageUtils.loadHead(relation1.avatar1, holder.getView(R.id.user_nav1)) // holder.setText(R.id.tv_nickname1, relation1.nickname1) // // ImageUtils.loadHead(relation2.avatar1, holder.getView(R.id.user_nav2)) // holder.setText(R.id.tv_nickname2, relation2.nickname1) // // ImageUtils.loadHead(relation3.avatar1, holder.getView(R.id.user_nav3)) // holder.setText(R.id.tv_nickname3, relation3.nickname1) holder.setText(R.id.tv_gx_time, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[0].end_time.toLong())) holder.setText(R.id.tv_gx_time2, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[1].end_time.toLong())) holder.setText(R.id.tv_gx_time3, TimeUtils.formatDurationDaysOnly(noCpBean.relation_list[2].end_time.toLong())) holder.getView(R.id.user_nav1).setOnClickListener { if (relation1.user_id1== SpUtil.getUserId()){ // 点击第一个用户头像 onItemClickListener?.onUserClick(relation1.user_id2.toString()) }else { // 点击第一个用户头像 onItemClickListener?.onUserClick(relation1.user_id1.toString()) } } holder.getView(R.id.user_nav2).setOnClickListener { if (relation2.user_id1== SpUtil.getUserId()) { // 点击第二个用户头像 onItemClickListener?.onUserClick(relation2.user_id2.toString()) }else{ onItemClickListener?.onUserClick(relation2.user_id1.toString()) } } holder.getView(R.id.user_nav3).setOnClickListener { if (relation3.user_id1== SpUtil.getUserId()) { // 点击第三个用户头像 onItemClickListener?.onUserClick(relation3.user_id2.toString()) }else{ onItemClickListener?.onUserClick(relation3.user_id1.toString()) } } } } } } } } override fun convert( holder: BaseViewHolder, item: MultiItemEntity? ) { val viewType = getItemViewType(holder.layoutPosition - headerLayoutCount) when (viewType) { TYPE_NOCP_WITH_NAME, TYPE_NOCP_WITH_NAME_AND_LIST-> { val noCpItem = item as RelationBean.NoCpBean convertNoCp(holder, noCpItem, viewType) } else -> { } } } }