JianShu/app/src/main/java/com/zjgsu/jianshu/Adapter/PerceptionAdapter.kt

124 lines
6.2 KiB
Kotlin

package com.zjgsu.jianshu
import android.content.Intent
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import cn.bmob.v3.BmobQuery
import cn.bmob.v3.exception.BmobException
import cn.bmob.v3.listener.FindListener
import com.bumptech.glide.Glide
import com.zjgsu.jianshu.Activity.Perception_informationActivity
import com.zjgsu.jianshu.Bmob.Book_info_bmob
import com.zjgsu.jianshu.Bmob.Perception_bmob
import com.zjgsu.jianshu.Bmob.User_bmob
class PerceptionAdapter(val perceptionList: List<Perception>) :
RecyclerView.Adapter<PerceptionAdapter.ViewHolder>() {
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val perception_perception: TextView = view.findViewById(R.id.perception_content)
//用户头像
val perception_userIcon: ImageView = view.findViewById(R.id.perception_avatar)
val perception_posetPerson: TextView = view.findViewById(R.id.perception_username)
//书籍封面
val perception_bookPic: ImageView = view.findViewById(R.id.perception_bookpic)
val perception_bookName: TextView = view.findViewById(R.id.perception_bookName)
val perception_bookAuthor: TextView = view.findViewById(R.id.perception_bookAuthor)
val perception_bookInf: View = view.findViewById(R.id.perception_bookInf)
lateinit var perceptionid: String
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view =
LayoutInflater.from(parent.context).inflate(R.layout.perception_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
var bookName: String = ""
val perception = perceptionList[position]
//设置text
holder.perceptionid = perception.perceptionid
val query = BmobQuery<Perception_bmob>()
query.addWhereEqualTo("objectId", perception.perceptionid)
//加载用户头像
query.findObjects(object : FindListener<Perception_bmob>() {
override fun done(p0: MutableList<Perception_bmob>?, p1: BmobException?) {
if (p1 == null) {
if (p0 != null && p0.size > 0) {
for (p in p0) {
bookName = p.b_name
//找发布用户
holder.perception_perception.text = p.perception
val queryUser = BmobQuery<User_bmob>()
queryUser.findObjects(object : FindListener<User_bmob>() {
override fun done(list: List<User_bmob>, e: BmobException?) {
if (e == null) {
for (i in list) {
if (p.userid.equals(i.objectId)) {
holder.perception_posetPerson.text = i.nickName
//加载图片
Glide.with(holder.itemView.context)
.load(i.face.url) // 确保你的Book对象有正确的图片URL
.placeholder(R.drawable.pre_load) // 可以设置一个占位图
.error(R.drawable.fail_load) // 设置加载失败的图
.into(holder.perception_userIcon)
}
}
} else {
Log.d("perception", "error")
}
}
})
val queryBook = BmobQuery<Book_info_bmob>()
queryBook.addWhereEqualTo("name", bookName)
queryBook.findObjects(object : FindListener<Book_info_bmob>() {
override fun done(list: List<Book_info_bmob>, e: BmobException?) {
if (e == null) {
for (i in list) {
holder.perception_bookName.text=bookName
holder.perception_bookAuthor.text=i.author_name
Glide.with(holder.itemView.context)
.load(i.picture.url) // 确保你的Book对象有正确的图片URL
.placeholder(R.drawable.pre_load) // 可以设置一个占位图
.error(R.drawable.fail_load) // 设置加载失败的图
.into(holder.perception_bookPic)
}
} else {
Log.d("myLog", "error")
}
}
})
}
}
}
}
})
holder.perception_bookInf.setOnClickListener() {
val intent = Intent(holder.itemView.context, BookInformationActivity::class.java)
intent.putExtra("Book_name", bookName)
ContextCompat.startActivity(holder.itemView.context, intent, null)
}
holder.perception_perception.setOnClickListener {
val intent = Intent(holder.itemView.context, Perception_informationActivity::class.java)
intent.putExtra("PerceptionId", holder.perceptionid)
ContextCompat.startActivity(holder.itemView.context, intent, null)
}
//给评论图标设置点击事件
//给评论图标设置点击事件
// holder.comment.setOnClickListener(View.OnClickListener { showPopupcomment() })
}
override fun getItemCount() = perceptionList.size
}