diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7214c31..922d70a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -39,7 +39,7 @@
-
+
@@ -52,8 +52,7 @@
+ android:configChanges="orientation|keyboard|keyboardHidden|navigation" />
@@ -74,7 +73,6 @@
android:label="Jianshu">
-
diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/Author_introductionActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/Author_introductionActivity.kt
new file mode 100644
index 0000000..9d2536f
--- /dev/null
+++ b/app/src/main/java/com/zjgsu/jianshu/Activity/Author_introductionActivity.kt
@@ -0,0 +1,87 @@
+package com.zjgsu.jianshu
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.recyclerview.widget.StaggeredGridLayoutManager
+import cn.bmob.v3.Bmob
+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.Bmob.Author_bmob
+import com.zjgsu.jianshu.Bmob.Book_info_bmob
+import kotlinx.android.synthetic.main.activity_anthor_introduction.*
+import kotlinx.android.synthetic.main.activity_book_info.*
+
+class Author_introductionActivity : AppCompatActivity() {
+ private var authorworkList = ArrayList()
+ private lateinit var userId:String
+ private lateinit var adapter: Book_authorAdapter
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_anthor_introduction)
+ Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754")//连接bmob
+ userId = getSharedPreferences("userinf", Context.MODE_PRIVATE).getString("user_id", "").toString()
+ adapter = Book_authorAdapter(authorworkList,userId)
+ val layoutManager =
+ StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL)//第一个参数是列数
+ authorwork_recyclerView.layoutManager = layoutManager
+ authorwork_recyclerView.adapter = adapter
+ inits()
+ author_back.setOnClickListener {
+ val bookName=intent.getStringExtra("book_name")
+ val intent = Intent(this, BookInformationActivity::class.java)
+ intent.putExtra("Book_name", bookName)
+ startActivity(intent)
+ finish()
+ }
+ }
+ private fun inits() {
+ val author_name=intent.getStringExtra("author_name")
+ book_authorname1.text = author_name
+ val authorQuery = BmobQuery()
+ authorQuery.addWhereEqualTo("author_name",author_name)
+ authorQuery.findObjects(object : FindListener() {
+ override fun done(list: List, e: BmobException?) {
+ if (e == null) {
+ val author=list[0]
+ author_intro.text=author.author_introduce
+ loadAuthorPic(author.picture.url)
+ val authorworkQuery=BmobQuery()
+ authorworkQuery.addWhereEqualTo("authorid",author.objectId)
+ authorworkQuery.findObjects(object :FindListener(){
+ override fun done(books:List,e:BmobException?){
+ if(e==null){
+ authorworkList.clear()
+ books?.let {
+ authorworkList.addAll(it.map { b ->
+ // 使用安全调用和Elvis操作符提供默认值或进行错误处理
+ val url = b.picture?.url ?: "default_url_or_handling_case"
+ AuthorWork(b.name,author_name.toString(), url)
+ })
+ }
+ adapter.notifyDataSetChanged()
+ }
+ else{
+ }
+ }
+ })
+ } else {
+ Log.d("error", "error")
+ }
+// expand_text_view.text=author_selfintro
+ }
+ })
+ }
+ private fun loadAuthorPic(coverUrl: String) {
+ Glide.with(this) // 传入 Context
+ .load(coverUrl) // 加载图片的 URL
+ .placeholder(R.drawable.pre_load) // 设置占位图
+ .error(R.drawable.fail_load) // 设置加载失败时显示的图片
+ .into(author_img) // 将图片加载到指定的 ImageView 中
+ }
+}
\ No newline at end of file
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 37ddf9b..aca380e 100644
--- a/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt
+++ b/app/src/main/java/com/zjgsu/jianshu/Activity/BookInformationActivity.kt
@@ -28,6 +28,7 @@ class BookInformationActivity : AppCompatActivity() {
private lateinit var bookName: String
private lateinit var authorName: String
private lateinit var userId:String
+ private lateinit var picurl:String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_book_info)
@@ -70,6 +71,7 @@ class BookInformationActivity : AppCompatActivity() {
if (e == null && books != null && books.isNotEmpty()) {
val book = books[0]
loadBookCover(book.picture.url)
+ picurl=book.picture.url
if (book.buxing + book.tuijian + book.buxing != 0) {
var tuijian_res: Double = 0.0
tuijian_res = (book.tuijian) * 100.0 / (book.buxing + book.tuijian + book.yiban)
@@ -108,11 +110,12 @@ class BookInformationActivity : AppCompatActivity() {
private fun setClickListeners() {
book_authorname.setOnClickListener {
- val intent = Intent(this, author_introductionActivity::class.java)
+ val intent = Intent(this, Author_introductionActivity::class.java)
intent.putExtra("author_name", authorName)
+ intent.putExtra("book_name",bookName)
startActivity(intent)
}
-
+ //TODO:不一定回到MainActivity::class,后面还要在跳转前保存上一个页面
bookinfo_return.setOnClickListener {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
@@ -142,6 +145,7 @@ class BookInformationActivity : AppCompatActivity() {
val bookshelfRecord = BookShelf()
bookshelfRecord.setb_name(bookName)
bookshelfRecord.setuserid(userId)
+ bookshelfRecord.setpicurl(picurl)
bookshelfRecord.save(object : SaveListener() {
override fun done(objectId: String?, saveException: BmobException?) {
if (saveException == null) {
diff --git a/app/src/main/java/com/zjgsu/jianshu/Activity/BookShelfActivity.kt b/app/src/main/java/com/zjgsu/jianshu/Activity/BookShelfActivity.kt
index b1c0228..79aeab9 100644
--- a/app/src/main/java/com/zjgsu/jianshu/Activity/BookShelfActivity.kt
+++ b/app/src/main/java/com/zjgsu/jianshu/Activity/BookShelfActivity.kt
@@ -33,11 +33,13 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import android.view.MotionEvent
import android.view.View.OnTouchListener
+import android.widget.Button
+import androidx.appcompat.app.AlertDialog
+import cn.bmob.v3.listener.UpdateListener
import kotlinx.android.synthetic.main.layout_bottom_navigation.*
class BookShelfActivity : AppCompatActivity() {
- val Booklist = ArrayList()
- val Booklist2 = ArrayList()
+ val booklist = ArrayList()
lateinit var adapter:BookshelfAdapter
lateinit var userId:String
override fun onCreate(savedInstanceState: Bundle?) {
@@ -45,95 +47,34 @@ class BookShelfActivity : AppCompatActivity() {
setContentView(R.layout.activity_bookshelf)
Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754")//连接bmob
userId = getSharedPreferences("userinf", Context.MODE_PRIVATE).getString("user_id", "").toString()
- inits()
+ loadBookshelf()
val layoutManager=GridLayoutManager(this,3)
- recyclerView2.layoutManager=layoutManager
- adapter=BookshelfAdapter(this,Booklist)
- recyclerView2.adapter=adapter
- adapter.setRecyclerViewOnItemClickListener(object : BookshelfAdapter.RecyclerViewOnItemClickListener {
- override fun onItemClickListener(view: View?, position: Int) {
- Log.d("zyzh","12311")
- adapter.setSelectItem(position)
- }
-
- override fun onItemLongClickListener(view: View?, position: Int): Boolean {
- Log.d("zy11","123121")
- adapter.setShowBox()
- adapter.setSelectItem(position)
- adapter.notifyDataSetChanged()
- return true
- }
- })
-
- swipeRefresh2.setOnRefreshListener {
- refreshBookShelf(adapter)
+ bookshelf_recyclerView.layoutManager=layoutManager
+ adapter=BookshelfAdapter(this,booklist)
+ bookshelf_recyclerView.adapter=adapter
+ bookshelf_swipeRefresh.setOnRefreshListener {
+ loadBookshelf()
}
setupBottomNavigation()
+ select()
}
- override fun onCreateOptionsMenu(menu: Menu?): Boolean {
- menuInflater.inflate(R.menu.nav_bookshelf,menu)
- return true
- }
-
- override fun onOptionsItemSelected(item: MenuItem): Boolean {
- when(item.getItemId()) {
- R.id.addBook-> {
- val intent = Intent(this, MainActivity::class.java)
- startActivity(intent)
- finish()
- }
- R.id.editor->{
- adapter.initMap()
- adapter.setShowBox()
- adapter.notifyDataSetChanged()
-// bookshelf_checkBox.visibility=View.VISIBLE
- }
- }
- return super.onContextItemSelected(item);
- }
- private fun inits() {
+ private fun loadBookshelf(){
+ booklist.clear()
val bmobQuery = BmobQuery()
bmobQuery.addWhereEqualTo("userid", userId)
bmobQuery.findObjects(object : FindListener() {
- override fun done(list: List, e: BmobException?) {
+ override fun done(books: List?, e: BmobException?) {
+ bookshelf_swipeRefresh.isRefreshing = false
if (e == null) {
- for (i in list) {
- Booklist.add(Book_Shelf(i.b_name))
- val adapter =BookshelfAdapter(this@BookShelfActivity,Booklist)
- recyclerView2.adapter = adapter
+ booklist.clear()
+ books?.let {
+ booklist.addAll(it.map { b ->
+ val url = b.picurl?: "default_url_or_handling_case"
+ Book_Shelf(b.b_name,url)
+ })
}
- Booklist.add(Book_Shelf("添加"))
- Booklist2.add(Book_Shelf("添加"))
- val adapter =BookshelfAdapter(this@BookShelfActivity,Booklist)
- recyclerView2.adapter = adapter
- }
- }
- })
- }
- private fun refreshBookShelf(adapter: BookshelfAdapter) {
- thread {
- Thread.sleep(2000)
- runOnUiThread {
- initbookshelf()
- adapter.notifyDataSetChanged()
- swipeRefresh2.isRefreshing = false
- Toast.makeText(this, "刷新成功!", Toast.LENGTH_SHORT).show()
- }
- }
- }
- private fun initbookshelf(){
- Booklist.clear()
- val bmobQuery = BmobQuery()
- bmobQuery.addWhereEqualTo("userid", userId)
- bmobQuery.findObjects(object : FindListener() {
- override fun done(list: List, e: BmobException?) {
- if (e == null) {
- for (i in list) {
- Booklist.add(Book_Shelf(i.b_name))
- }
- Booklist.add(Book_Shelf("添加"))
- val adapter =BookshelfAdapter(this@BookShelfActivity,Booklist)
- recyclerView2.adapter = adapter
+ booklist.add(Book_Shelf("添加", ""))
+ adapter.notifyDataSetChanged()
}else {
Log.d("error", "error")
}
@@ -155,4 +96,90 @@ class BookShelfActivity : AppCompatActivity() {
NavigationHelper.navigateTo(this, MyActivity::class.java)
}
}
+
+ private fun select(){
+ bookshelf_select.setOnClickListener{
+ default_title.visibility=View.GONE
+ selected_title.visibility = View.VISIBLE
+ bookshelf_layout_bottom_navigation.visibility=View.GONE
+ selected_bottom_navigation.visibility=View.VISIBLE
+ adapter.toggleSelectMode()
+ }
+ bookshelf_cancel.setOnClickListener {
+ default_title.visibility=View.VISIBLE
+ selected_title.visibility = View.GONE
+ bookshelf_layout_bottom_navigation.visibility=View.VISIBLE
+ selected_bottom_navigation.visibility=View.GONE
+ adapter.toggleSelectMode()
+ }
+ adapter.onSelectionChanged = { selectedCount ->
+ select_books.text = if (selectedCount > 0) "已选择 $selectedCount 本书籍" else "选择书籍"
+ }
+ }
+ fun onRemoveFromBookshelfClicked(view: View) {
+ //TODO:目前是用消息弹窗的方式,其他方法:若没有选中书籍时,可以设置移除按钮不可选中
+ if (adapter.selectedItems.isEmpty()) {
+ // 如果没有选中图书,弹出提示并返回
+ Toast.makeText(this, "请先选择要移除的图书", Toast.LENGTH_SHORT).show()
+ return
+ }
+ adapter.selectedItems.toList().also { positionList ->
+ // 创建并显示删除确认对话框
+ val builder = AlertDialog.Builder(this)
+ val dialogView = layoutInflater.inflate(R.layout.delete_dialog, null)
+ builder.setView(dialogView)
+
+ val dialog = builder.create()
+ dialogView.findViewById(R.id.dialog_message)?.text = "是否将《${booklist[positionList.first()].bkname}》移出书架?"
+ dialogView.findViewById