Skip to content

Instantly share code, notes, and snippets.

@rohitjakhar
Created March 28, 2021 22:41
Show Gist options
  • Save rohitjakhar/259c93e202e9fcd7d0147d91dc7e5e32 to your computer and use it in GitHub Desktop.
Save rohitjakhar/259c93e202e9fcd7d0147d91dc7e5e32 to your computer and use it in GitHub Desktop.
HomeAdapter
package com.rohitjakhar.blogx.adapters
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.paging.PagingDataAdapter
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import coil.load
import com.rohitjakhar.blogx.R
import com.rohitjakhar.blogx.databinding.PostSingleRowBinding
import com.rohitjakhar.blogx.model.PostData
class HomePostAdapter() :
PagingDataAdapter<PostData, HomePostAdapter.MyViewHolder>(DataDifferntiator) {
inner class MyViewHolder(private val binding: PostSingleRowBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(postData: PostData) = with(binding) {
postImage.load(postData.embedded.wpFeaturedmedia[0].sourceUrl) {
crossfade(200)
error(R.drawable.dee)
}
txtPostId.text = postData.id.toString()
txtPostTitle.text = postData.title.rendered
}
}
object DataDifferntiator : DiffUtil.ItemCallback<PostData>() {
override fun areItemsTheSame(oldItem: PostData, newItem: PostData): Boolean {
return oldItem.id == newItem.id
}
override fun areContentsTheSame(oldItem: PostData, newItem: PostData): Boolean {
return oldItem == newItem
}
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
getItem(position)?.let { holder.bind(it) }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MyViewHolder(
PostSingleRowBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment