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. 34
      app/src/main/java/io/legado/app/ui/changesource/DiffCallBack.kt

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

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