class
WorkoutDiffCallback(
private
val oldList: List<WorkoutSetInfo>,
private
val newList: List<WorkoutSetInfo>
) : DiffUtil.Callback() {
override fun getOldListSize(): Int = oldList.size
override fun getNewListSize(): Int = newList.size
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return
newList[newItemPosition] == oldList[oldItemPosition]
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
return
newList[newItemPosition] == oldList[oldItemPosition]
}
}
class
WorkoutAdapter(
private
val dataSet: ArrayList<WorkoutSetInfo> = arrayListOf()
) : RecyclerView.Adapter<WorkoutViewHolder>() {
fun submitList(items: List<WorkoutSetInfo>) {
val petDiffUtilCallback = WorkoutDiffCallback(dataSet, items)
val diffResult = DiffUtil.calculateDiff(petDiffUtilCallback)
dataSet.clear()
dataSet.addAll(items)
diffResult.dispatchUpdatesTo(
this
)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WorkoutViewHolder {
...
}
override fun onBindViewHolder(holder: WorkoutViewHolder, position: Int) {
...
}
override fun getItemCount(): Int {
return
dataSet.size
}
}