2024-04-25 10:33:59 +08:00

94 lines
4.3 KiB
Kotlin

package com.zjgsu.jianshu
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
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.zjgsu.jianshu.Bmob.Book_bmob
import java.io.InputStream
import java.net.HttpURLConnection
import java.net.URL
class BookAdapter(var bookList: List<Book>) : RecyclerView.Adapter<BookAdapter.ViewHolder>() {
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
val bookList_Image: ImageView = view.findViewById(R.id.book_Image)
val bookList_Name: TextView = view.findViewById(R.id.book_Name)
val bookList_Introduce: TextView = view.findViewById(R.id.book_Introduce)
val innerLinearLayout: LinearLayout = view.findViewById(R.id.bookItem_innerLinearLayout)
val outerLinearLayout:LinearLayout=view.findViewById(R.id.bookItem_outerLinearLayout)
val rankimg:ImageView=view.findViewById(R.id.bookItem_rankimg)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.book_item, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val book = bookList[position]
holder.bookList_Name.text = book.name
holder.bookList_Introduce.text = book.introduce
val backgrounds = arrayOf(R.drawable.color_lightpurple, R.drawable.color_lightblue,R.drawable.color_lightgreen, R.drawable.color_flesh)
holder.innerLinearLayout.setBackgroundResource(backgrounds[position % backgrounds.size])
if (position == 0) { // 假设第一名使用金牌图片
holder.rankimg.setImageResource(R.drawable.gold)
} else if (position == 1) { // 第二名使用其他图片,以此类推
holder.rankimg.setImageResource(R.drawable.silver)
}
else if(position==2){
holder.rankimg.setImageResource(R.drawable.copper)
}
val query = BmobQuery<Book_bmob>()
query.addWhereEqualTo("name", book.name)
query.findObjects(object : FindListener<Book_bmob>() {
override fun done(p0: MutableList<Book_bmob>?, p1: BmobException?) {
if (p1 == null) {
if (p0 != null && p0.size > 0) {
for (p in p0) {
object : Thread() {
override fun run() {
try {
val url = URL(p!!.picture.url)
val connection: HttpURLConnection =
url.openConnection() as HttpURLConnection
connection.setRequestMethod("GET")
connection.setConnectTimeout(5000)
val `in`: InputStream = connection.getInputStream()
val bitmap: Bitmap =
BitmapFactory.decodeStream(`in`)
holder.bookList_Image.setImageBitmap(bitmap)
} catch (e: Exception) {
e.printStackTrace()
}
}
}.start()
}
}
}
}
})
// Glide.with(context).load(book.imageId).into(holder.bookList_Image)
holder.outerLinearLayout.setOnClickListener{
val intent = Intent(holder.itemView.context, Book_informationActivity::class.java)
intent.putExtra("Book_name", book.name)
ContextCompat.startActivity(holder.itemView.context, intent, null)
}
}
override fun getItemCount() = bookList.size
fun updateBooks(newBooks: List<Book>) {
bookList = newBooks
notifyDataSetChanged()
}
}