diff --git a/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt b/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt new file mode 100644 index 0000000000000000000000000000000000000000..b63d5f4379d249dfe158f7c902be301d1baa18f3 --- /dev/null +++ b/app/src/main/java/com/example/android/marsphotos/overview/PhotoGridAdapter.kt @@ -0,0 +1,42 @@ +package com.example.android.marsphotos.overview + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import com.example.android.marsphotos.databinding.GridViewItemBinding +import com.example.android.marsphotos.network.MarsPhoto + +class PhotoGridAdapter : ListAdapter<MarsPhoto, + PhotoGridAdapter.MarsPhotoViewHolder>(MarsPhotoViewHolder) { + class MarsPhotoViewHolder(private var binding: + GridViewItemBinding + ): + RecyclerView.ViewHolder(binding.root) { + fun bind(MarsPhoto: MarsPhoto) { + binding.photo = MarsPhoto + binding.executePendingBindings() + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PhotoGridAdapter.MarsPhotoViewHolder { + return MarsPhotoViewHolder(GridViewItemBinding.inflate( + LayoutInflater.from(parent.context))) + } + + override fun onBindViewHolder(holder: PhotoGridAdapter.MarsPhotoViewHolder, position: Int) { + val marsPhoto = getItem(position) + holder.bind(marsPhoto) + } + + companion object DiffCallback : DiffUtil.ItemCallback<MarsPhoto>() { + override fun areItemsTheSame(oldItem: MarsPhoto, newItem: MarsPhoto): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: MarsPhoto, newItem: MarsPhoto): Boolean { + return oldItem.imgSrcUrl == newItem.imgSrcUrl + } + } +} \ No newline at end of file