package com.kuanzhai.user.ui.menu.adapter
|
|
import android.view.LayoutInflater
|
import android.widget.LinearLayout
|
import android.widget.TextView
|
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
|
import cn.sinata.xldutils.adapter.util.ViewHolder
|
import cn.sinata.xldutils.clickDelay
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.SpanBuilder
|
import cn.sinata.xldutils.utils.interval
|
import cn.sinata.xldutils.utils.parserTime
|
import cn.sinata.xldutils.utils.toMDHMTime
|
import cn.sinata.xldutils.visible
|
import com.facebook.drawee.view.SimpleDraweeView
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.dialog.CommentDialog
|
import com.kuanzhai.user.network.entity.CommentBean
|
import kotlinx.android.synthetic.main.item_reply.view.*
|
import java.util.ArrayList
|
|
class CommentAdapter(list: ArrayList<CommentBean>):HFRecyclerAdapter<CommentBean>(list, R.layout.item_comment) {
|
var callback:ReplyCallback? = null
|
val showReplyList = arrayListOf<Long>()
|
override fun onBind(holder: ViewHolder, position: Int, data: CommentBean) {
|
holder.bind<SimpleDraweeView>(R.id.iv_avatar).setImageURI(data.userAvatar)
|
holder.setText(R.id.tv_name,data.userName)
|
holder.setText(R.id.tv_time,data.createTime.parserTime().interval())
|
val tvReply = holder.bind<TextView>(R.id.tv_reply)
|
val tvReplyCount = holder.bind<TextView>(R.id.tv_reply_count)
|
tvReplyCount.text = "展开${data.replyCommentList.size-3}条回复"
|
val tvFull = holder.bind<TextView>(R.id.tv_full)
|
val tvFullContent = holder.bind<TextView>(R.id.tv_content_full)
|
val tvContent = holder.bind<TextView>(R.id.tv_content)
|
tvContent.text = data.content
|
tvFullContent.text = data.content
|
tvFullContent.post {
|
if (tvFullContent.lineCount > 3&&!data.isFull){
|
tvContent.visible()
|
tvFull.visible()
|
tvFullContent.gone()
|
}else{
|
tvFullContent.visible()
|
tvContent.gone()
|
tvFull.gone()
|
}
|
}
|
tvFull.setOnClickListener {
|
data.isFull = true
|
notifyItemChanged(position)
|
}
|
tvReplyCount.setOnClickListener {
|
showReplyList.add(data.id)
|
notifyItemChanged(position)
|
}
|
val replyCount = holder.bind<LinearLayout>(R.id.ll_open_reply)
|
val llReply = holder.bind<LinearLayout>(R.id.ll_reply)
|
if (data.replyCommentList.isEmpty()){
|
replyCount.gone()
|
llReply.gone()
|
}else if (data.id in showReplyList||data.replyCommentList.size<4){ //全部展开
|
replyCount.gone()
|
llReply.visible()
|
llReply.removeAllViews()
|
data.replyCommentList.forEachIndexed { index, it ->
|
val inflate = LayoutInflater.from(context).inflate(R.layout.item_reply, null)
|
inflate.iv_avatar.setImageURI(it.userAvatar)
|
inflate.tv_name.text = it.userName
|
inflate.tv_time.text = it.createTime.parserTime().interval()
|
inflate.tv_content_full.text =
|
if (it.replyUserId.isNotEmpty())
|
SpanBuilder("回复${it.replyUserName}:${it.content}").bold(0,2).build()
|
else it.content
|
inflate.tv_reply.clickDelay {
|
callback?.onReply(position,index)
|
}
|
llReply.addView(inflate)
|
}
|
}else{
|
replyCount.visible()
|
llReply.visible()
|
llReply.removeAllViews()
|
data.replyCommentList.take(3).forEachIndexed { index, it ->
|
val inflate = LayoutInflater.from(context).inflate(R.layout.item_reply, null)
|
inflate.iv_avatar.setImageURI(it.userAvatar)
|
inflate.tv_name.text = it.userName
|
inflate.tv_time.text = it.createTime.parserTime().interval()
|
inflate.tv_content_full.text =
|
if (it.replyUserId.isNotEmpty())
|
SpanBuilder("回复${it.replyUserName}:${it.content}").bold(0,2).build()
|
else it.content
|
inflate.tv_reply.clickDelay {
|
callback?.onReply(position,index)
|
}
|
llReply.addView(inflate)
|
}
|
}
|
|
tvReply.setOnClickListener {
|
callback?.onComment(position)
|
}
|
}
|
|
interface ReplyCallback{
|
fun onComment(position: Int)
|
fun onReply(position: Int,subPosition: Int)
|
}
|
}
|