94 lines
4.3 KiB
Kotlin
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()
|
||
|
}
|
||
|
}
|