package com.sinata.xqmuse.ui.discovery.adapter
|
|
import android.view.View
|
import android.widget.TextView
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.RecyclerView
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
|
import cn.sinata.xldutils.adapter.util.ViewHolder
|
import cn.sinata.xldutils.gone
|
import cn.sinata.xldutils.utils.SPUtils
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.visible
|
import com.facebook.drawee.view.SimpleDraweeView
|
import com.sinata.xqmuse.R
|
import com.sinata.xqmuse.dialog.CommentClickPop
|
import com.sinata.xqmuse.dialog.ReplyDialog
|
import com.sinata.xqmuse.dialog.ReportDialog
|
import com.sinata.xqmuse.network.Comment
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.ReplyComment
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.discovery.DynamicActivity
|
import com.sinata.xqmuse.ui.discovery.ReplyActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.extention.clickDelay
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.dip
|
import org.jetbrains.anko.startActivity
|
import java.util.ArrayList
|
|
class CommentAdapter(comment: ArrayList<Comment>):HFRecyclerAdapter<Comment>(comment, R.layout.item_comment) {
|
val findId by lazy {
|
(context as DynamicActivity).id
|
}
|
var layoutManager: LinearLayoutManager? = null
|
|
override fun onBind(holder: ViewHolder, position: Int, data: Comment) {
|
holder.bind<SimpleDraweeView>(R.id.iv_avatar).setImageURI(data.headImg)
|
holder.setText(R.id.tv_name,data.userName)
|
holder.setText(R.id.tv_content,data.content)
|
holder.setText(R.id.tv_time,data.insertTime)
|
val tv_reply_count = holder.bind<TextView>(R.id.tv_reply_count)
|
if (data.commentList.size>2&&!data.showAll){
|
tv_reply_count.text = "查看${data.commentList.size}条回复"
|
tv_reply_count.visible()
|
tv_reply_count.setOnClickListener {
|
context.startActivity<ReplyActivity>("data" to data,"findId" to findId)
|
}
|
}else
|
tv_reply_count.gone()
|
|
val tv_like = holder.bind<TextView>(R.id.tv_like)
|
tv_like.text = data.likeCount.toString()
|
tv_like.setCompoundDrawablesRelativeWithIntrinsicBounds(if (data.isLike == "1") R.mipmap.dianzaned else R.mipmap.dianzan,0,0,0) //todo是否点赞
|
tv_like.clickDelay {
|
if (data.isLike!="1")
|
HttpManager.doLike(findId,2,data.id).request(context as BaseActivity){_,_->
|
data.isLike = if (data.isLike == "1") "0" else "1"
|
data.likeCount = if (data.isLike == "1") data.likeCount+1 else data.likeCount-1
|
notifyItemChanged(position)
|
}
|
}
|
|
holder.itemView.setOnClickListener {
|
val conversationLongClickPop = CommentClickPop(context)
|
conversationLongClickPop.setCallback(object : StringCallback {
|
override fun onResult(rst: String) {
|
val activity = context as BaseActivity
|
val type = if(rst == "report") ReportDialog.TYPE_REPORT else if (data.replyUserId == SPUtils.instance().getString(
|
Const.User.USER_ID,"-1")) ReportDialog.TYPE_REPLY else ReportDialog.TYPE_COMMENT
|
if(type == ReportDialog.TYPE_REPORT)
|
ReportDialog.show(
|
activity.supportFragmentManager,
|
object : StringCallback {
|
override fun onResult(rst: String) {
|
HttpManager.report(2,data.id,rst).request(activity){ _, _->
|
activity.myToast("举报成功")
|
}
|
}
|
})
|
else
|
ReplyDialog.show(activity.supportFragmentManager,"回复${data.userName}",object :StringCallback{
|
override fun onResult(rst: String) {
|
HttpManager.addComment(findId,data.id,rst,data.id,data.userId).request(activity){ _, _->
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_REPLY))
|
activity.myToast("评论成功")
|
}
|
}
|
})
|
}
|
})
|
conversationLongClickPop.showAsDropDown(holder.bind(R.id.tv_name),context.dip(200),0)
|
}
|
|
val rv_reply = holder.bind<RecyclerView>(R.id.rv_reply)
|
rv_reply.layoutManager = LinearLayoutManager(context)
|
val reply = arrayListOf<ReplyComment>()
|
val adapter = ReplyAdapter(reply)
|
adapter.findId = findId
|
adapter.commentId = data.id
|
if (data.showAll){
|
reply.addAll(data.commentList)
|
}else{
|
reply.addAll(data.commentList.take(2))
|
}
|
rv_reply.adapter = adapter
|
}
|
|
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
|
super.onAttachedToRecyclerView(recyclerView)
|
layoutManager = recyclerView.layoutManager as LinearLayoutManager
|
}
|
}
|