339 lines
16 KiB
Kotlin
339 lines
16 KiB
Kotlin
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<MultiItemEntity>) : BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder>(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<View>(R.id.user_nav1).setOnClickListener {
|
||
// 点击第一个用户头像
|
||
onItemClickListener?.onUserClick(noCpBean.relation_list[0].user_id1.toString())
|
||
}
|
||
|
||
holder.getView<View>(R.id.user_nav2).setOnClickListener {
|
||
// 点击第二个用户头像
|
||
onItemClickListener?.onUserClick(noCpBean.relation_list[0].user_id2.toString())
|
||
}
|
||
|
||
// 设置删除按钮点击事件
|
||
holder.getView<View>(R.id.icon_cp_dele).setOnClickListener {
|
||
onItemClickListener?.onDeleteClick(noCpBean.relation_list[0])
|
||
}
|
||
|
||
// 设置置顶按钮点击事件
|
||
holder.getView<View>(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<View>(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<View>(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<View>(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<View>(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<View>(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<View>(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 -> {
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|