pull/783/head
gedoor 5 years ago
parent c7ac4e74c4
commit 00ede10362
  1. 20
      app/src/main/java/io/legado/app/base/adapter/RecyclerAdapter.kt

@ -106,12 +106,14 @@ abstract class RecyclerAdapter<ITEM, VB : ViewBinding>(protected val context: Co
} }
override fun getNewListSize(): Int { override fun getNewListSize(): Int {
return items?.size ?: 0 return (items?.size ?: 0) + getHeaderCount() + getFooterCount()
} }
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = getItem(oldItemPosition) ?: return false val oldItem = getItem(oldItemPosition - getHeaderCount())
val newItem = items?.getOrNull(newItemPosition) ?: return false ?: return true
val newItem = items?.getOrNull(newItemPosition - getHeaderCount())
?: return true
return itemCallback.areItemsTheSame(oldItem, newItem) return itemCallback.areItemsTheSame(oldItem, newItem)
} }
@ -119,14 +121,18 @@ abstract class RecyclerAdapter<ITEM, VB : ViewBinding>(protected val context: Co
oldItemPosition: Int, oldItemPosition: Int,
newItemPosition: Int newItemPosition: Int
): Boolean { ): Boolean {
val oldItem = getItem(oldItemPosition) ?: return false val oldItem = getItem(oldItemPosition - getHeaderCount())
val newItem = items?.getOrNull(newItemPosition) ?: return false ?: return true
val newItem = items?.getOrNull(newItemPosition - getHeaderCount())
?: return true
return itemCallback.areContentsTheSame(oldItem, newItem) return itemCallback.areContentsTheSame(oldItem, newItem)
} }
override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? { override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? {
val oldItem = getItem(oldItemPosition) ?: return null val oldItem = getItem(oldItemPosition - getHeaderCount())
val newItem = items?.getOrNull(newItemPosition) ?: return null ?: return null
val newItem = items?.getOrNull(newItemPosition - getHeaderCount())
?: return null
return itemCallback.getChangePayload(oldItem, newItem) return itemCallback.getChangePayload(oldItem, newItem)
} }
} }

Loading…
Cancel
Save