feat: 优化代码

pull/103/head
kunfei 5 years ago
parent 55da14fcd8
commit 63855a1787
  1. 12
      app/src/main/java/io/legado/app/ui/changesource/ChangeSourceAdapter.kt
  2. 36
      app/src/main/java/io/legado/app/ui/changesource/DiffCallBack.kt

@ -1,6 +1,7 @@
package io.legado.app.ui.changesource
import android.content.Context
import android.os.Bundle
import io.legado.app.R
import io.legado.app.base.adapter.ItemViewHolder
import io.legado.app.base.adapter.SimpleRecyclerAdapter
@ -15,8 +16,9 @@ class ChangeSourceAdapter(context: Context, val callBack: CallBack) :
SimpleRecyclerAdapter<SearchBook>(context, R.layout.item_change_source) {
override fun convert(holder: ItemViewHolder, item: SearchBook, payloads: MutableList<Any>) {
val bundle = payloads.getOrNull(0) as? Bundle
holder.itemView.apply {
if (payloads.isEmpty()) {
if (bundle == null) {
this.onClick { callBack.changeTo(item) }
tv_origin.text = item.originName
tv_last.text = item.getDisplayLastChapterTitle()
@ -26,8 +28,12 @@ class ChangeSourceAdapter(context: Context, val callBack: CallBack) :
iv_checked.invisible()
}
} else {
tv_origin.text = item.originName
tv_last.text = item.getDisplayLastChapterTitle()
bundle.keySet().map {
when (it) {
"name" -> tv_origin.text = item.originName
"latest" -> tv_last.text = item.getDisplayLastChapterTitle()
}
}
}
}
}

@ -1,16 +1,12 @@
package io.legado.app.ui.changesource
import android.os.Bundle
import androidx.recyclerview.widget.DiffUtil
import io.legado.app.data.entities.SearchBook
class DiffCallBack(private val oldItems: List<SearchBook>, private val newItems: List<SearchBook>) :
DiffUtil.Callback() {
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return oldItems[oldItemPosition].bookUrl == newItems[newItemPosition].bookUrl
}
override fun getOldListSize(): Int {
return oldItems.size
}
@ -19,18 +15,38 @@ class DiffCallBack(private val oldItems: List<SearchBook>, private val newItems:
return newItems.size
}
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldItems[oldItemPosition]
val newItem = newItems[newItemPosition]
return oldItem.bookUrl == newItem.bookUrl
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return oldItems[oldItemPosition].originName == newItems[newItemPosition].originName
&& oldItems[oldItemPosition].latestChapterTitle == newItems[newItemPosition].latestChapterTitle
val oldItem = oldItems[oldItemPosition]
val newItem = newItems[newItemPosition]
if (oldItem.originName != newItem.originName) {
return false
}
if (oldItem.latestChapterTitle != newItem.latestChapterTitle) {
return false
}
return true
}
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
val oldItem = oldItems[oldItemPosition]
val newItem = newItems[newItemPosition]
if (oldItem.originName != newItem.originName || oldItem.latestChapterTitle != newItem.latestChapterTitle) {
return true
val payload = Bundle()
if (oldItem.originName != newItem.originName) {
payload.putString("name", newItem.originName)
}
if (oldItem.latestChapterTitle != newItem.latestChapterTitle) {
payload.putString("latest", newItem.latestChapterTitle)
}
if (payload.isEmpty) {
return null
}
return null
return payload
}
}
Loading…
Cancel
Save