package com.sinata.xqmuse.ui.discovery.adapter
|
|
import android.text.TextPaint
|
import android.text.method.LinkMovementMethod
|
import android.text.style.ClickableSpan
|
import android.view.View
|
import android.widget.ImageView
|
import android.widget.TextView
|
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.RecyclerView
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.activity.ImagePagerActivity
|
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.SpanBuilder
|
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.ReportDialog
|
import com.sinata.xqmuse.dialog.TipDialog
|
import com.sinata.xqmuse.network.HttpManager
|
import com.sinata.xqmuse.network.entity.Dynamic
|
import com.sinata.xqmuse.network.request
|
import com.sinata.xqmuse.ui.course.adapter.PhotoAdapter
|
import com.sinata.xqmuse.ui.discovery.DynamicActivity
|
import com.sinata.xqmuse.ui.discovery.VideoPlayerActivity
|
import com.sinata.xqmuse.utils.Const
|
import com.sinata.xqmuse.utils.event.EmptyEvent
|
import com.sinata.xqmuse.utils.interfaces.StringCallback
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.startActivity
|
import java.util.*
|
|
class DynamicAdapter(dyns: ArrayList<Dynamic>,val isDetail:Boolean = false):HFRecyclerAdapter<Dynamic>(dyns, R.layout.item_dyn) {
|
override fun onBind(holder: ViewHolder, position: Int, data: Dynamic) {
|
val tvMore = holder.bind<TextView>(R.id.tv_more)
|
val tvContent = holder.bind<TextView>(R.id.tv_content)
|
val tvContent3 = holder.bind<TextView>(R.id.tv_content_3)
|
val tvLike = holder.bind<TextView>(R.id.tv_like)
|
val tvComment = holder.bind<TextView>(R.id.tv_comment)
|
val rv_photo = holder.bind<RecyclerView>(R.id.rv_photo)
|
val iv_video = holder.bind<SimpleDraweeView>(R.id.iv_video)
|
val iv_play = holder.bind<View>(R.id.iv_play)
|
val iv_del = holder.bind<View>(R.id.iv_del)
|
tvContent.text = data.content
|
val content = data.content.take(72)+"…查看更多"
|
tvContent3.text = SpanBuilder(content).clickSpan(content.length-4,content.length,object :ClickableSpan(){
|
override fun onClick(widget: View) {
|
data.isExpand = true
|
notifyItemChanged(position)
|
}
|
|
override fun updateDrawState(ds: TextPaint) {
|
super.updateDrawState(ds)
|
ds.isUnderlineText = false
|
}
|
}).color(context,content.length-4,content.length,R.color.colorBlue)
|
.bold(content.length-4,content.length).build()
|
tvContent3.movementMethod = LinkMovementMethod.getInstance()
|
holder.bind<SimpleDraweeView>(R.id.iv_avatar).setImageURI(data.headImg)
|
holder.setText(R.id.tv_name, data.userName)
|
holder.bind<ImageView>(R.id.iv_level).setImageResource(data.getLevelRes())
|
holder.setText(R.id.tv_title, data.title)
|
tvMore.text = SpanBuilder("…查看更多").color(context, 0, 1, R.color.textColor).build()
|
tvLike.text = data.likeCount.toString()
|
tvLike.setCompoundDrawablesRelativeWithIntrinsicBounds(if (data.isLike == "1") R.mipmap.dianzaned else R.mipmap.dianzan,0,0,0)
|
tvLike.setOnClickListener {
|
|
}
|
tvComment.text = data.comment.toString()
|
if (data.isExpand){
|
tvContent.visible()
|
tvContent3.gone()
|
tvMore.gone()
|
}else{
|
if (data.content.length>88){
|
tvContent.gone()
|
tvContent3.visible()
|
tvMore.gone()
|
}else{
|
tvContent.visible()
|
tvContent3.gone()
|
tvMore.gone()
|
}
|
}
|
// tvContent.post {
|
// val layout = tvContent.layout
|
// if (layout != null) {
|
// val lines: Int = layout.lineCount
|
// // 使用行数
|
// if (lines>3){
|
// tvContent.gone()
|
// tvContent3.visible()
|
// tvMore.visible()
|
// }else{
|
// tvContent.visible()
|
// tvContent3.gone()
|
// tvMore.gone()
|
// }
|
// }
|
// }
|
tvMore.setOnClickListener {
|
data.isExpand = true
|
notifyItemChanged(position)
|
}
|
|
if (data.video.isNotEmpty()){ //有视频
|
rv_photo.gone()
|
iv_video.visible()
|
iv_play.visible()
|
iv_video.setImageURI(data.coverImage)
|
iv_video.setOnClickListener {
|
context.startActivity<VideoPlayerActivity>("videoUrl" to data.video)
|
}
|
}else {
|
iv_video.gone()
|
iv_play.gone()
|
if (data.img.isEmpty())
|
rv_photo.gone()
|
else{
|
rv_photo.visible()
|
val gridLayoutManager = GridLayoutManager(context, 3)
|
rv_photo.layoutManager = gridLayoutManager
|
gridLayoutManager.isSmoothScrollbarEnabled = false
|
rv_photo.setHasFixedSize(true)
|
rv_photo.isNestedScrollingEnabled = false
|
val imgs = arrayListOf<String>()
|
imgs.addAll(data.img.split(",").filter { it.isNotEmpty() })
|
val imgAdapter = PhotoAdapter(imgs)
|
rv_photo.adapter = imgAdapter
|
imgAdapter.setOnItemClickListener { view, _position ->
|
//图片预览
|
context.startActivity<ImagePagerActivity>("url" to imgs,"position" to _position)
|
}
|
}
|
}
|
|
if (data.userId == SPUtils.instance().getString(Const.User.USER_ID)){
|
iv_del.visible()
|
iv_del.setOnClickListener {
|
TipDialog.show((context as BaseActivity).supportFragmentManager,"确认删除所选动态吗?",object :
|
TipDialog.OnClickCallback{
|
override fun onOk() {
|
HttpManager.deleteFind(data.id).request(context as BaseActivity){_,_->
|
context.myToast("删除成功")
|
if (isDetail){
|
EventBus.getDefault().post(EmptyEvent(Const.EventCode.REFRESH_DISCOVERY))
|
(context as BaseActivity).finish()
|
}else{
|
mData.removeAt(position)
|
notifyDataSetChanged()
|
}
|
}
|
}
|
|
override fun onCancel() {
|
}
|
})
|
}
|
}else
|
iv_del.gone()
|
|
if (isDetail){ //展示详情的元素
|
holder.setText(R.id.tv_time,data.insertTime)
|
tvComment.gone()
|
tvLike.gone()
|
if (!data.isMine){
|
val ivReport = holder.bind<View>(R.id.iv_report)
|
ivReport.visible()
|
ivReport.setOnClickListener {
|
val dynamicActivity = context as DynamicActivity
|
ReportDialog.show(dynamicActivity.supportFragmentManager,object :StringCallback{
|
override fun onResult(rst: String) {
|
HttpManager.report( dynamicActivity.id,rst).request(dynamicActivity){_,_->
|
dynamicActivity.myToast("举报成功")
|
}
|
}
|
})
|
}
|
}
|
|
}
|
}
|
|
}
|