diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt index aca380e..93f65d3 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt @@ -29,12 +29,14 @@ class BookInformationActivity : AppCompatActivity() { private lateinit var authorName: String private lateinit var userId:String private lateinit var picurl:String + private var sourceActivityClass: Class<*>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_book_info) Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") bookName = intent.getStringExtra("Book_name") ?: "" userId = getSharedPreferences("userinf", Context.MODE_PRIVATE).getString("user_id", "").toString() + sourceActivityClass = intent.getSerializableExtra("Source_Activity") as? Class<*> loadPerceptions() setupRecyclerView() loadBookInfo() @@ -102,7 +104,7 @@ class BookInformationActivity : AppCompatActivity() { queryBookshelf.findObjects(object : FindListener() { override fun done(bookshelfItems: MutableList?, e: BmobException?) { if (e == null && bookshelfItems != null && bookshelfItems.isNotEmpty()) { - bookinfo_addBook.setImageResource(R.drawable.bookshelf2) + bookinfo_addBook.setImageResource(R.drawable.alreadyin) } } }) @@ -117,8 +119,15 @@ class BookInformationActivity : AppCompatActivity() { } //TODO:不一定回到MainActivity::class,后面还要在跳转前保存上一个页面 bookinfo_return.setOnClickListener { - val intent = Intent(this, MainActivity::class.java) - startActivity(intent) + if (sourceActivityClass != null) { + // 返回到上一个页面 + val intent = Intent(this, sourceActivityClass!!) + startActivity(intent) + } else { + // 如果没有来源页面信息,则返回到 MainActivity + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + } finish() } @@ -131,10 +140,14 @@ class BookInformationActivity : AppCompatActivity() { intent.putExtra("Book_name", bookName) startActivity(intent) } + toBookshelf.setOnClickListener { + val intent = Intent(this, BookShelfActivity::class.java) + startActivity(intent) + } setCommentClickListeners() } - + //TODO:以后可以考虑再次点击这个“已加入的按钮”后,弹出一个对话框:是否将该书移除,然后将该书从书架中移除。而不是弹:该书已在您的书架中 private fun addBookToBookshelf() { val queryBookshelf = BmobQuery() queryBookshelf.addWhereEqualTo("userid", userId) @@ -149,7 +162,7 @@ class BookInformationActivity : AppCompatActivity() { bookshelfRecord.save(object : SaveListener() { override fun done(objectId: String?, saveException: BmobException?) { if (saveException == null) { - bookinfo_addBook.setImageResource(R.drawable.bookshelf2) + bookinfo_addBook.setImageResource(R.drawable.alreadyin) Toast.makeText( this@BookInformationActivity, "添加成功", @@ -164,7 +177,7 @@ class BookInformationActivity : AppCompatActivity() { } }) } else { - Toast.makeText(this@BookInformationActivity, "书本已在您的书架中!", Toast.LENGTH_SHORT) + Toast.makeText(this@BookInformationActivity, "该书已在您的书架中!", Toast.LENGTH_SHORT) .show() } } diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/GoodBookActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/GoodBookActivity.kt index 2d7ed8b..2f6688f 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/GoodBookActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/GoodBookActivity.kt @@ -1,5 +1,6 @@ package com.zjgsu.jianshu +import android.content.Context import android.content.Intent import android.os.Bundle import android.widget.Toast @@ -24,7 +25,8 @@ class GoodBookActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_bookrank) Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754")//连接bmob - adapter= BookRankAdapter(goodbookList,false) + val userId = getSharedPreferences("userinf", Context.MODE_PRIVATE).getString("user_id", "").toString() //全局范围内userid,登录的时候存进来 + adapter= BookRankAdapter(this,goodbookList,false,userId) bookrank_recyclerView.layoutManager= StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) bookrank_recyclerView.adapter=adapter diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/HotBookActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/HotBookActivity.kt index 7dd0a6b..3b1b331 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/HotBookActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/HotBookActivity.kt @@ -1,4 +1,5 @@ package com.zjgsu.jianshu +import android.content.Context import android.content.Intent import android.os.Bundle import android.text.TextUtils @@ -27,7 +28,8 @@ class HotBookActivity: AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_bookrank) Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754")//连接bmob - adapter= BookRankAdapter(hotbookList,true) + val userId = getSharedPreferences("userinf", Context.MODE_PRIVATE).getString("user_id", "").toString() + adapter= BookRankAdapter(this,hotbookList,true,userId) bookrank_recyclerView.layoutManager=StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) bookrank_recyclerView.adapter=adapter bookrank_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/LiteratureActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/LiteratureActivity.kt index 3baa995..320ade8 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/LiteratureActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/LiteratureActivity.kt @@ -30,7 +30,7 @@ class LiteratureActivity : AppCompatActivity() { Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") val titleTextView = findViewById(R.id.categoryPage_title) titleTextView.text = "文学" - adapter = BookAdapter2(bookList) + adapter = BookAdapter2(bookList,1) categoryPage_recyclerView.layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) categoryPage_recyclerView.adapter = adapter categoryPage_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/MainActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/MainActivity.kt index a480ab3..c6806df 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/MainActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/MainActivity.kt @@ -1,5 +1,6 @@ package com.zjgsu.jianshu +import android.content.Context import android.content.Intent import android.os.Bundle import android.text.TextUtils diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/ManagementActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/ManagementActivity.kt index 1d9ff3b..d2ab39e 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/ManagementActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/ManagementActivity.kt @@ -29,7 +29,7 @@ class ManagementActivity:AppCompatActivity() { Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") val titleTextView = findViewById(R.id.categoryPage_title) titleTextView.text = "管理学" - adapter = BookAdapter2(bookList) + adapter = BookAdapter2(bookList,2) categoryPage_recyclerView.layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) categoryPage_recyclerView.adapter = adapter categoryPage_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/PhilosophyActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/PhilosophyActivity.kt index da9df6f..182b922 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/PhilosophyActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/PhilosophyActivity.kt @@ -30,7 +30,7 @@ class PhilosophyActivity:AppCompatActivity() { Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") val titleTextView = findViewById(R.id.categoryPage_title) titleTextView.text = "哲学" - adapter = BookAdapter2(bookList) + adapter = BookAdapter2(bookList,5) categoryPage_recyclerView.layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) categoryPage_recyclerView.adapter = adapter categoryPage_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/PsychologyActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/PsychologyActivity.kt index 11bc252..bd2a295 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/PsychologyActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/PsychologyActivity.kt @@ -29,7 +29,7 @@ class PsychologyActivity:AppCompatActivity() { Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") val titleTextView = findViewById(R.id.categoryPage_title) titleTextView.text = "心理学" - adapter = BookAdapter2(bookList) + adapter = BookAdapter2(bookList,3) categoryPage_recyclerView.layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) categoryPage_recyclerView.adapter = adapter categoryPage_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/ScienceActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/ScienceActivity.kt index 8f2fb4a..008cf9e 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Activity/ScienceActivity.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Activity/ScienceActivity.kt @@ -30,7 +30,7 @@ class ScienceActivity:AppCompatActivity() { Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754") val titleTextView = findViewById(R.id.categoryPage_title) titleTextView.text = "科学" - adapter = BookAdapter2(bookList) + adapter = BookAdapter2(bookList,4) categoryPage_recyclerView.layoutManager = StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL) categoryPage_recyclerView.adapter = adapter categoryPage_swipeRefresh.setOnRefreshListener { diff --git a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter.kt b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter.kt index c54ef98..2eb05d2 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter.kt @@ -63,6 +63,7 @@ inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { holder.outerLinearLayout.setOnClickListener{ val intent = Intent(holder.itemView.context, BookInformationActivity::class.java) intent.putExtra("Book_name", book.name) + intent.putExtra("Source_Activity", MainActivity::class.java) ContextCompat.startActivity(holder.itemView.context, intent, null) } } diff --git a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter2.kt b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter2.kt index b63c67f..06ef55a 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter2.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookAdapter2.kt @@ -25,7 +25,7 @@ import java.io.InputStream import java.net.HttpURLConnection import java.net.URL -class BookAdapter2(val bookList: List) : RecyclerView.Adapter() { +class BookAdapter2(val bookList: List,val categoryId:Int) : RecyclerView.Adapter() { inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { val bookList_Image: ImageView = view.findViewById(R.id.book_Image) diff --git a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookRankAdapter.kt b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookRankAdapter.kt index d21d941..30e4112 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookRankAdapter.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookRankAdapter.kt @@ -1,32 +1,45 @@ package com.zjgsu.jianshu.Adapter +import android.content.Context import android.content.Intent import android.media.Image +import android.util.Log 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 android.widget.Toast 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 cn.bmob.v3.listener.SaveListener import com.bumptech.glide.Glide import com.zjgsu.jianshu.* +import com.zjgsu.jianshu.Bmob.BookShelf +import kotlinx.android.synthetic.main.bookinfo_title.* -class BookRankAdapter(var bookList: List,val isHotList:Boolean): RecyclerView.Adapter() { +class BookRankAdapter(private val context: Context,var bookList: List, val isHotList: Boolean, val userId: String) : + RecyclerView.Adapter() { inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { - val bookrank_pic:ImageView=view.findViewById(R.id.bookrank_pic) - val bookrank_intro:TextView=view.findViewById(R.id.bookrank_intro) - val bookrank_name:TextView=view.findViewById(R.id.bookrank_name) - val bookrank_desc:TextView=view.findViewById(R.id.bookrank_desc) + val bookrank_pic: ImageView = view.findViewById(R.id.bookrank_pic) + val bookrank_intro: TextView = view.findViewById(R.id.bookrank_intro) + val bookrank_name: TextView = view.findViewById(R.id.bookrank_name) + val bookrank_desc: TextView = view.findViewById(R.id.bookrank_desc) val innerLinearLayout: LinearLayout = view.findViewById(R.id.bookrank_innerLinearLayout) - val outerLinearLayout:LinearLayout=view.findViewById(R.id.bookrank_outerLinearLayout) - val bookrank_author:TextView=view.findViewById(R.id.bookrank_author) - val bookrank_icon:ImageView=view.findViewById(R.id.bookrank_icon) + val outerLinearLayout: LinearLayout = view.findViewById(R.id.bookrank_outerLinearLayout) + val bookrank_author: TextView = view.findViewById(R.id.bookrank_author) + val bookrank_icon: ImageView = view.findViewById(R.id.bookrank_icon) + val bookrank_addbook: ImageView = view.findViewById(R.id.bookrank_addbook) + val bookrank_add:TextView=view.findViewById(R.id.bookrank_add) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val view = LayoutInflater.from(parent.context).inflate(R.layout.book_rank2_item, parent, false) + val view = + LayoutInflater.from(parent.context).inflate(R.layout.book_rank2_item, parent, false) return ViewHolder(view) } @@ -36,13 +49,14 @@ class BookRankAdapter(var bookList: List,val isHotList:Boolean): Recy holder.bookrank_intro.text = book.intro val backgrounds = arrayOf( R.drawable.color_lightpurple, R.drawable.color_lightblue, - R.drawable.color_lightgreen, R.drawable.color_flesh) + R.drawable.color_lightgreen, R.drawable.color_flesh + ) holder.innerLinearLayout.setBackgroundResource(backgrounds[position % backgrounds.size]) - if(isHotList) - holder.bookrank_desc.text="在读人数:"+book.courtOfReaders + if (isHotList) + holder.bookrank_desc.text = "在读人数:" + book.courtOfReaders else - holder.bookrank_desc.text="简书推荐值: "+book.score - holder.bookrank_author.text=book.author + holder.bookrank_desc.text = "简书推荐值: " + book.score + holder.bookrank_author.text = book.author when (position) { 0 -> { holder.bookrank_icon.setImageResource(R.drawable.gold) @@ -66,11 +80,65 @@ class BookRankAdapter(var bookList: List,val isHotList:Boolean): Recy .placeholder(R.drawable.pre_load) // 可以设置一个占位图 .error(R.drawable.fail_load) // 设置加载失败的图 .into(holder.bookrank_pic) - holder.outerLinearLayout.setOnClickListener{ + holder.outerLinearLayout.setOnClickListener { val intent = Intent(holder.itemView.context, BookInformationActivity::class.java) intent.putExtra("Book_name", book.name) + if(isHotList) + intent.putExtra("Source_Activity", HotBookActivity::class.java) + else + intent.putExtra("Source_Activity", GoodBookActivity::class.java) ContextCompat.startActivity(holder.itemView.context, intent, null) } + holder.bookrank_addbook.setOnClickListener { + val queryBookshelf = BmobQuery() + queryBookshelf.addWhereEqualTo("userid", userId) + queryBookshelf.addWhereEqualTo("b_name", book.name) + queryBookshelf.findObjects(object : FindListener() { + override fun done(bookshelfItems: MutableList?, e: BmobException?) { + if (e == null && (bookshelfItems == null || bookshelfItems.isEmpty())) { + val bookshelfRecord = BookShelf() + bookshelfRecord.setb_name(book.name) + bookshelfRecord.setuserid(userId) + bookshelfRecord.setpicurl(book.picUrl) + bookshelfRecord.save(object : SaveListener() { + override fun done(objectId: String?, saveException: BmobException?) { + if (saveException == null) { + holder.bookrank_addbook.setImageResource(R.drawable.bookshelf2) + Toast.makeText( + context, + "添加成功", + Toast.LENGTH_SHORT + ).show() + } else { + Log.e( + "BookInfo", + "Error adding book to bookshelf: ${saveException.message}" + ) + } + } + }) + } else { + Toast.makeText(context, "该书已在您的书架中!", Toast.LENGTH_SHORT) + .show() + } + } + }) + } + fun judgeInBookshelf() { + val queryBookshelf = BmobQuery() + queryBookshelf.addWhereEqualTo("userid", userId) + queryBookshelf.addWhereEqualTo("b_name", book.name) + queryBookshelf.findObjects(object : FindListener() { + override fun done(bookshelfItems: MutableList?, e: BmobException?) { + if (e == null && bookshelfItems != null && bookshelfItems.isNotEmpty()) { + holder.bookrank_addbook.setImageResource(R.drawable.alreadyin) + holder.bookrank_add.text="已加入" + } + } + }) + } + judgeInBookshelf() } + override fun getItemCount() = bookList.size } \ No newline at end of file diff --git a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookshelfAdapter.kt b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookshelfAdapter.kt index 1c16898..64b898e 100644 --- a/app/src/main/java/com/zjgsu/jianshu/Adapter/BookshelfAdapter.kt +++ b/app/src/main/java/com/zjgsu/jianshu/Adapter/BookshelfAdapter.kt @@ -61,6 +61,7 @@ class BookshelfAdapter(val context: Context, val bookshelf: ArrayList @@ -117,7 +117,7 @@ android:src="@drawable/addbook" /> + app:srcCompat="@drawable/addbook" /> + app:srcCompat="@drawable/bookshelf1" />