| | |
| | | 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.utils.SpanBuilder |
| | | import cn.sinata.xldutils.utils.showAllowingStateLoss |
| | | 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.CommentLongClickDialog |
| | | import com.sinata.xqmuse.dialog.ReportDialog |
| | | import com.sinata.xqmuse.network.Comment |
| | | import com.sinata.xqmuse.dialog.SuccessDialog |
| | | import com.sinata.xqmuse.network.HttpManager |
| | | import com.sinata.xqmuse.network.ReplyComment |
| | | import com.sinata.xqmuse.network.entity.Comment |
| | | 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 |
| | | |
| | | var callback:StringCallback? = 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.bind<SimpleDraweeView>(R.id.iv_avatar).setImageURI(data.avatar) |
| | | holder.setText(R.id.tv_name,data.nickname) |
| | | 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() |
| | | holder.setText(R.id.tv_time,data.publishTime) |
| | | val tv_reply = holder.bind<TextView>(R.id.tv_reply) |
| | | if (data.replyContent.isNullOrEmpty()) |
| | | tv_reply.gone() |
| | | else{ |
| | | tv_reply.visible() |
| | | tv_reply.text = SpanBuilder("平台回复:${data.replyContent}").bold(0,5).build() |
| | | } |
| | | |
| | | 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.setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,if (data.like == 1) R.mipmap.dianzaned else R.mipmap.dianzan,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 |
| | | HttpManager.doLike(data.id).request(context as BaseActivity){_,_-> |
| | | data.like = if (data.like == 1) 2 else 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) |
| | | holder.itemView.setOnLongClickListener { |
| | | callback?.onResult(position.toString()) |
| | | return@setOnLongClickListener false |
| | | } |
| | | |
| | | 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 |
| | | } |
| | | } |