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 -> {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|