Skip to content

Instantly share code, notes, and snippets.

@jsh-me
Last active October 16, 2021 12:13
Show Gist options
  • Save jsh-me/600fa9d2d671eda45a035fb1e6305829 to your computer and use it in GitHub Desktop.
Save jsh-me/600fa9d2d671eda45a035fb1e6305829 to your computer and use it in GitHub Desktop.
Implement BaseAdapter Using ListAdpater
package com.jshme.feature.home.adapter
import android.annotation.SuppressLint
import android.view.ViewGroup
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import androidx.viewbinding.ViewBinding
internal class HomeAdapter<T: HomeViewHolderModel>
: ListAdapter<T, HomeViewHolder<T>>(object : DiffUtil.ItemCallback<T>() {
override fun areItemsTheSame(oldItem: T, newItem: T): Boolean {
return oldItem.id == newItem.id
}
@SuppressLint("DiffUtilEquals")
override fun areContentsTheSame(oldItem: T, newItem: T): Boolean {
return oldItem == newItem
}
}) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HomeViewHolder<T> = blahblahblah....
override fun onBindViewHolder(holder: HomeViewHolder<T>, position: Int) {
val model = getItem(position)
holder.bindModel(model)
}
override fun getItemViewType(position: Int): Int = getItem(position).getViewType()
}
internal abstract class HomeViewHolder<T: HomeViewHolderModel>(
protected val itemView: ViewBinding
) : RecyclerView.ViewHolder(itemView.root) {
open fun bindModel(model: T) = Unit
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment