pull/90/head^2
kunfei 5 years ago
parent eb54b86187
commit e62f842635
  1. 22
      app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceAdapter.kt
  2. 29
      app/src/main/java/io/legado/app/ui/book/source/manage/DiffCallBack.kt

@ -1,8 +1,10 @@
package io.legado.app.ui.book.source.manage package io.legado.app.ui.book.source.manage
import android.content.Context import android.content.Context
import android.os.Bundle
import android.view.Menu import android.view.Menu
import android.widget.PopupMenu import android.widget.PopupMenu
import androidx.core.os.bundleOf
import io.legado.app.R import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter import io.legado.app.base.adapter.SimpleRecyclerAdapter
@ -22,7 +24,7 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
getItems().forEach { getItems().forEach {
selected.add(it) selected.add(it)
} }
notifyItemRangeChanged(0, itemCount, 1) notifyItemRangeChanged(0, itemCount, bundleOf(Pair("selected", null)))
} }
fun revertSelection() { fun revertSelection() {
@ -33,7 +35,7 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
selected.add(it) selected.add(it)
} }
} }
notifyItemRangeChanged(0, itemCount, 1) notifyItemRangeChanged(0, itemCount, bundleOf(Pair("selected", null)))
} }
fun getSelection(): LinkedHashSet<BookSource> { fun getSelection(): LinkedHashSet<BookSource> {
@ -68,7 +70,8 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
override fun convert(holder: ItemViewHolder, item: BookSource, payloads: MutableList<Any>) { override fun convert(holder: ItemViewHolder, item: BookSource, payloads: MutableList<Any>) {
with(holder.itemView) { with(holder.itemView) {
if (payloads.isEmpty()) { val payload = payloads.getOrNull(0) as? Bundle
if (payload == null) {
this.setBackgroundColor(context.backgroundColor) this.setBackgroundColor(context.backgroundColor)
if (item.bookSourceGroup.isNullOrEmpty()) { if (item.bookSourceGroup.isNullOrEmpty()) {
cb_book_source.text = item.bookSourceName cb_book_source.text = item.bookSourceName
@ -104,8 +107,17 @@ class BookSourceAdapter(context: Context, val callBack: CallBack) :
popupMenu.show() popupMenu.show()
} }
} else { } else {
when (payloads[0]) { payload.keySet().map {
1 -> cb_book_source.isChecked = selected.contains(item) when (it) {
"select" -> cb_book_source.isChecked = selected.contains(item)
"name", "group" -> if (item.bookSourceGroup.isNullOrEmpty()) {
cb_book_source.text = item.bookSourceName
} else {
cb_book_source.text =
String.format("%s (%s)", item.bookSourceName, item.bookSourceGroup)
}
"enabled" -> swt_enabled.isChecked = payload.getBoolean(it)
}
} }
} }
} }

@ -1,5 +1,6 @@
package io.legado.app.ui.book.source.manage package io.legado.app.ui.book.source.manage
import android.os.Bundle
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import io.legado.app.data.entities.BookSource import io.legado.app.data.entities.BookSource
@ -25,9 +26,31 @@ class DiffCallBack(
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldItems[oldItemPosition] val oldItem = oldItems[oldItemPosition]
val newItem = newItems[newItemPosition] val newItem = newItems[newItemPosition]
return oldItem.bookSourceName == newItem.bookSourceName if (oldItem.bookSourceName != newItem.bookSourceName)
&& oldItem.bookSourceGroup == newItem.bookSourceGroup return false
&& oldItem.enabled == newItem.enabled if (oldItem.bookSourceGroup != newItem.bookSourceGroup)
return false
if (oldItem.enabled != newItem.enabled)
return false
return true
} }
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
val oldItem = oldItems[oldItemPosition]
val newItem = newItems[newItemPosition]
val payload = Bundle()
if (oldItem.bookSourceName != newItem.bookSourceName) {
payload.putString("name", newItem.bookSourceName)
}
if (oldItem.bookSourceGroup != newItem.bookSourceGroup) {
payload.putString("group", newItem.bookSourceGroup)
}
if (oldItem.enabled != newItem.enabled) {
payload.putBoolean("enabled", newItem.enabled)
}
if (payload.isEmpty) {
return null
}
return payload
}
} }
Loading…
Cancel
Save